2013-07-08 4 views
3

QDeclarativeView에서 QML을 통해 완료된 프런트 엔드 UI가있는 Qt 4.8 앱이 있습니다.QML 글꼴/스타일 이름 지정 문제 : Mac/Linux 플랫폼 차이점

응용 프로그램의 (원본) 리눅스 버전에

, 예상대로

font.family: "ReykjavikOne OT AGauge" 

또는

font.family: "ReykjavikOne OT CGauge" 

이러한 작업을 지정을 통해이 텍스트 항목에 QML에서 사용하는 글꼴의 몇 가지 있습니다 (CGauge는 일종의 뚱뚱하고 대담한 버전이다).

그러나 Mac 포트에서이 두 글꼴은 추한 기본 폴백 글꼴로 대체됩니다. 하지만 사용하면

font.family: "ReykjavikOne OT" 

에 "AGauge"가 표시됩니다. 리눅스 시스템에서

, fc-list | grep ReykjavikOne
/usr/share/fonts/opentype/ReykjavikOneCGaugeItalic.otf: ReykjavikOne OT,ReykjavikOne OT CGaugeItalic:style=CGaugeItalic 
/usr/share/fonts/opentype/ReykjavikOneCGauge.otf: ReykjavikOne OT,ReykjavikOne OT CGauge:style=CGauge 
/usr/share/fonts/opentype/ReykjavikOneAGauge.otf: ReykjavikOne OT,ReykjavikOne OT AGauge:style=AGauge 
/usr/share/fonts/opentype/ReykjavikOneAGaugeItalic.otf: ReykjavikOne OT,ReykjavikOne OT AGaugeItalic:style=AGaugeItalic 

및 Mac에서

이 FontBook은 하나의 "ReykjavikOne OT"항목에서 하위 항목으로 나열된 4 개 스타일을 보여줍니다 나에게 가져옵니다. CGauge 글꼴은 Mac의 다른 응용 프로그램에서 완벽하게 사용할 수있는 것 같습니다. 그래서 Qt/QML 특유의 문제라고 생각합니다.

스타일 이름 "CGauge"로 글꼴 스타일을 선택할 수있는 QML 텍스트/글꼴 메커니즘 (적어도 발견 할 수없는 글꼴)이있는 것 같지 않습니다. 대담한/글꼴 체중으로 주위를 어지럽게하는 것은 나를 더 과감한 AGauge 또는 기본 글꼴로 만드는 것 같습니다.

QML RichText 콘텐츠에도 마찬가지입니다. <style></style> 요소가 포함 된 텍스트는 font-family: 'ReykjavikOne OT CGauge'이 Linux에서는 잘 작동하지만 Mac에서는 대체 글꼴로 바뀌고 'ReykjavikOne OT'이 가장 좋으며 AGauge를 얻을 수 있습니다. (font-weight: bold;을 추가하면 굵은 AGauge가 표시되지만 CGauge는 현저하게 뚱뚱하다).

Mac 및 Linux (Debian/Wheezy) 시스템 모두 동일한 .otf 파일에서 설치된 글꼴을 사용합니다.

이 문제를 해결하고 Mac에서 표시 할 글꼴의 CGauge 스타일을 얻으려면 무엇이 최선의 노력입니까? (NB는 글꼴과 Mac에서 초보자입니다.)

답변

6

중요한 문제는 글꼴 메타 데이터입니다. AGauge/CGauge 비트는 글꼴 이름에서 누설되어서는 안됩니다. 많은 글꼴 편집기는 글꼴 작성자가 얼굴 (스타일) 필드에 원하는 문자열을 넣을 수있게 해주지 만 실제로 응용 프로그램을 이해하기를 원하면 엄격한 규칙이 적용됩니다.

몇 년 전 Microsoft는 자사의 앱에 CSS 스타일링을 사용하는 것에 대해 진지하게 생각하고 창의적인 이름 지정을 통해 모든 글꼴에 물렸다. 따라서 그들은 Adobe 및 다른 주요 글꼴 플레이어의 바이 인을 통해 앱에서 실제로 작동 할 수있는 것에 대한 엄격한 가이드 라인을 작성했습니다. Microsoft는 OpenType 사양을 공동으로 유지 관리하며 uniscribe는 OpenType 엔진과 비슷합니다. 글꼴이 지침을 준수하지 않습니다.

Microsoft 백서를 읽으십시오. 여기에는 Microsoft에서 구제 할 수있는 글꼴 이름 지정의 종류, 사용 된 경험적 방법 및 추론이 만들어내는 표준 이름이 나와 있습니다. 좋은 글꼴은 그 지명이 이미 표준 형태를 사용할 것이고 수정이 필요 없기 때문에 그 경험적 방법을 치지 않을 것입니다. 나쁜 글꼴의 이름은 Microsoft 플랫폼에서 자동으로 수정됩니다.Linux 나 OSX와 같은 다른 플랫폼에서는 아무런 수정이 없으므로 와일드 네이밍 (wild naming)은 당신이 쳤던 실패를 포함 해 사나운 결과를 낳을 것입니다.

https://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-components-postattachments/00-02-24-90-36/WPF-Font-Selection-Model.pdfhttp://blogs.adobe.com/typblography/typotechnica2007/Font%20names.pdf

는 해당는 fontconfig 출력 ReykjavikOneCGauge.otf 가족 이름으로 (즉, 우선 순위에 따라) ReykjavikOne OT 또는 ReykjavikOne OT CGauge 하나를 선언한다 나타내고, 얼굴 이름 CGauge. Microsoft 백서에 따르면 CGauge는 유효한 얼굴 이름이 아니므로 글꼴에서 ReykjavikOne OT CGauge를 성으로 사용하고 적절한 WWS (Weight Width Slope) 한정자에서 얼굴 이름을 만들어야합니다. 불행히도 ReykjavikOne OT (CGauge 제외)를 기본 이름으로, CGauge를 쓸모없는 얼굴 이름으로 선언합니다.

이전 소프트웨어는 새로운 Opentype 이름 필드를 읽지 않으므로 작성자의 의도와 관계없이 글꼴 스택이 충분히 오래된 경우 작업이 정렬 될 수 있습니다.

+0

감사합니다. 매혹적인! – timday

2

데비안 시스템의 fontforge에서 ReykjavikOneCGauge.otf 파일을 열고이 글꼴이 "일반"스타일 인 ReykjavikCGauge로 글꼴 이름/글꼴 패밀리 이름을 변경하고 다시 생성하여이 작업을 처리했습니다. 새로운 ReykjavikCGauge.otf를 설치하고 데비안 및 Mac 시스템에 설치하십시오. Mac에서는 이제 기존 글꼴과 완전히 다른 글꼴로 표시되고 font-family를 사용하면 ReykjavikCGauge에서 예상대로 글꼴에 액세스 할 수 있습니다.

+2

Font OpenSans으로 나를 위해 일했습니다. 모든 스타일을 "보통"으로 편집하고 새 이름을 지정하기 만하면됩니다. – Haselnussstrauch