PDF를 Rails x Heroku로 내보낼 때 오류 134071; 표시하는 방법

4055 단어 RubyRailswicked_pdf

개시하다


레일즈로 서비스를 만들면 인쇄를 전제로 증빙서류를 작성하기도 한다.
이때 편리한 Gem을 사용하면 간단하게 실현할 수 있다.
그러나 일부 텍스트가 PDF에 표시되지 않는 문제가 발생했습니다.
이번에는 당시의 해결책을 써보려고 합니다.

이번 환경

Rails (4.2.7.1)
wkhtmltopdf-binary-11 (0.1.0)
wicked_pdf (1.1.0)

PDF에 표시되지 않는 문자는?


그것은'봉화 134071;'이라는 글자다.
마치'〲〲'라고 불리는 것 같다.
'길'이 아니라 위에는'흙'이다.
웹 화면에서 이 글자를 볼 때 매우 번거로울 때 정확하게 나타난다.
그러나 PDF로 표시하면 문자가 모두 사라진다.
※ 다음은'134071; 전사랑'PDF 출력을 시도한 결과입니다.

부식 134071;에 관한 문자


조사 결과'봉화 134071;'은 마치 모래문이 맞은 글자인 것 같다.
Salo Gate에 관한 한 쌍은 아래 기사에 상세하게 쓰여 있기 때문에 읽어주세요.
유니코드의 Salo 문짝이 뭔가요? - 양지쪽 콘센트는 손상되지 않습니다.
http://vividcode.hatenablog.com/entry/unicode/surrogate-pair
사로가트는 이번에는 직접적인 원인이 아닐 수도 있지만'좀 특별한 문자'인 것 같다.

해결 방법 Noto Fonts 지정


갑자기 해결책을 찾게 되면 노트폰트를 넣어 CSS에서 폰트-family를 지정하면 정확하게 표시된다.
Noto Fonts는 Google에서 제공하는 글꼴 패밀리입니다.
이 글씨체는 가정에서도 일본어를 제공한다.
Noto Sans CJK JP
https://www.google.com/get/noto/#sans-jpan
위의 글꼴을 다운로드합니다.
주의해야 할 것은 로컬 개발 환경과 Heroku의 글꼴 저장 위치가 다르다는 것이다.
로컬 개발 환경에서는 다운로드한 글꼴을 ~/Library/Fonts 아래에 입력합니다.
~/Library/Fonts
├── NotoSansCJKjp-Black.otf
├── NotoSansCJKjp-Bold.otf
├── NotoSansCJKjp-DemiLight.otf
├── NotoSansCJKjp-Light.otf
├── NotoSansCJKjp-Medium.otf
├── NotoSansCJKjp-Regular.otf
├── NotoSansCJKjp-Thin.otf
├── NotoSansMonoCJKjp-Bold.otf
├── NotoSansMonoCJKjp-Regular.otf
Heroku는 다운로드한 글꼴을 RAILS.root/.fonts 아래에 입력합니다.
.fonts
├── NotoSansCJKjp-Black.otf
├── NotoSansCJKjp-Bold.otf
├── NotoSansCJKjp-DemiLight.otf
├── NotoSansCJKjp-Light.otf
├── NotoSansCJKjp-Medium.otf
├── NotoSansCJKjp-Regular.otf
├── NotoSansCJKjp-Thin.otf
├── NotoSansMonoCJKjp-Bold.otf
├── NotoSansMonoCJKjp-Regular.otf
└── ipaexg.ttf
Heroku는 fontconfig의 기본 글꼴 디렉토리에 해당하기 때문입니다.fonts인 것 같은데.
Heroku에서 일본어 글씨체를 예쁘게 써야 하나요? - 네.Qiita
http://qiita.com/ssuzuki@github/items/58be855f909f29c05ae6

CSS에서 Noto Fonts 지정


이후 PDF에 적용된 CSS에서 Noto Font을 지정하면 오류 134071;이 올바르게 표시됩니다.
app/assets/stylesheets/pdf.sass
@font-face
  font-family: 'Noto Sans JP'
  font-style: normal
  font-weight: 400
  src: local('Noto Sans CJK JP')

html
  font-family: 'Noto Sans JP', sans-serif
  text-rendering: optimizeLegibility
※ 다음은'134071; 전사랑'PDF 출력을 시도한 결과입니다.


이번에 Noto Fonts를 웹 글꼴로 지정해 읽으려 한 결과 로컬 개발 환경에 표시되었으나 Heroku에는'석회 134071;'이 표시되지 않았다.
CSS를 보면 노트폰츠가 적용됐지만 이유는 확실하지 않아 포기했다.https or http 주변이 의심스럽지만 아시는 분 있으면 댓글로 알려주세요.

좋은 웹페이지 즐겨찾기