삽질하는플머

'폰트 폴백'에 해당되는 글 2건

  1. 오늘도 변함없이 유니스크라이브 삽질.
  2. 유니스크라이브, Uniscribe 개삽질 중... 3

오늘도 변함없이 유니스크라이브 삽질.

탐구생활/Uniscribe
회사일에 밀려서 시간내기가 힘들지만, 아무튼 간만에 달려보는 유니스크라이브.
아직 클러스터 적용은 하지 않았고 유니스크라이브로 변환한 글립을 단순히 비주얼 순서대로 찍어본 상태.
때문에 아랍어같은 RTL 문자열에서 공백위치가 반대로 되어있고 겹침글자 처리도 조금 어색하다.


뒷부분의 콘솔은 얻어낸 글립의 정보를 열심히 찍고 있는 중. 다행히 약간만 가공하면 텍스쳐로 쓰기 딱 좋게 나와준다.

폰트폴백은 일단, MLang 을 이용한 폰트링크를 일차로 시도하고 여기서 실패할 경우 예약된 폴백 리스트를 사용하는 방법을 쓰기로 함. 아랍어는 MLang 에 의해 Arial 로 잘 링크되지만 힌두어는 그렇지 않기 때문에...

힌두어가 들어간 Mangal 폰트를 폴백리스트로 지정하고 테스트.
문자열은 catch22.net 의 강좌에서 가져옴. 무슨 뜻인지는 당연히 모름.



태국어는 MLang 에 의해 Tahoma 로 링크된다.



오호, 대충 그럴듯해~~~


그나저나 네시간 동안 작성한 유효 코드가 달랑 이백줄 이라니...
구현해야 할 기능은 산더미인데... 갈 길이 멀구먼~~~

유니스크라이브, Uniscribe 개삽질 중...

탐구생활/Uniscribe

유니스크라이브의 ScriptString API 는 참 쓰기도 좋고 예쁘고 편리한데...
아무리 뒤져봐도 글립단위 캐싱에 쓸만한 정보는 없다.
결국 저수준 함수들을 사용해야 하는데... 폰트폴백에서 절망중.

http://lists.cairographics.org/archives/cairo/2005-January/002901.html
폰트폴백 메커니즘을 알 수 있는 뾰족한 방법은 없다는 야그.
때문에 다른 어플들은 다음과 같은 방법을 사용한단다.

1. Pango: config 파일에 폴백폰트 목록을 가진다.
2. OpenOffice 폴백폰트의 구성가능한 리스트를 저장하는 것으로 보임.
3. SWT (from Eclipse) MS의 MLang DLL을 사용한다. 링킹 메커니즘 적용.

일단 위에서 언급된 MLang 이라는 지원병의 힘을 빌어 폰트링크에 의한 폰트폴백을 구현해 본다.
아직 유니스크라이브의 클러스터 정렬을 적용하지 않은 상태라 단어단위로 배치가 뒤틀린 상태임.

파란색이 GDI 함수에 의한 일반적인 폰트폴백. 굴림 21포인트.
빨간색이 MLang 의 폰트링크에 의한 폰트폴백. 마찬가지로 굴림 21포인트. 
MLang의 경우 아랍어를 Arial 로 링크하게 되는데, 정작 굴림에서 링크되는 저 폰트는 뭔지 모르겠다.
미묘한 차이는 있지만 그럭저럭 비슷해보이니 일단 폴백은 이 정도에서 마무리 짓자.

이 외에도 Uniscribe 의 ScriptString 폴백과 차이점을 든다면,
  Uniscribe : FixedSys 로 설정시 폴백이 되지 않는다. 메모장도 이와 동일. 
  MLang : FixedSys 로 설정해도 폴백폰트를 얻을 수 있다. 워드패드와 동일. 

중국어 간체를 섞어서 찍어본 화면.
여러 국가의 폰트가 섞여있을 때는 DrawText 와 비교해 MLang 폰트링크의 품질이 훨씬 보기 좋다.



약 1년의 시차를 두고 비슷한 고민을 하던 분이 GPG에 계셨음. 
http://j.mp/dn5TkB

불행히도 GPG가 닫혀버려 더이상 토론이 불가능한 상태. ㅠㅠ;;
작년 5월 글인데... 얼마나 외로우셨을까... ㅠㅠ;;



-----------
2010.6.30
류광님이 GPG에 트랙백 지원을 시작하셨다.
지원 계기가 이 글 때문이라는 언급을 주셨는데... 이런 곳까지 오시다니... 어흙~!
http://www.gpgstudy.com/forum/viewtopic.php?topic=25208

조 위에 축약한 글의 원 URL. 이걸 적어줘야 스팸트랙백이 안된다고 한다.
http://www.gpgstudy.com/forum/viewtopic.php?topic=23337