Takanori Uchiyama
uchiy****@appi*****
2005年 10月 29日 (土) 00:19:08 JST
少しばかり補足します. From: Takanori Uchiyama <uchiy****@appi*****> Subject: Re: xdvi-jp j1.31 Date: Fri, 28 Oct 2005 23:39:55 +0900 (JST) > 修正以前のソースがそもそも意味不明の計算をしています. > ascender が本当に ascender を取得し, descender が本当に descender を取 > 得しているなら, > font->face->ascender - font->face->descender > は, 意味不明な計算です. > ascender は, baseline から上の boudingbox までの長さ, descender は > baseline から下の boundingbox までの長さです. > h が boudingbox の下から上までの長さを表しているなら, > h * ascender / (ascender + descender) > で h の ascender 部分の長さです. baseline の位置が 0.88 : 0.12 にあることが分かっている OpenType のフォ ントをもちいるのなら, vf2ft.c は, Ver. 1.2 のソースのまま, font->ascend = (int)(h * 0.88 + 0.5); で論理的に正しく, 描画位置もほぼ正しいようです. 多分, FreeType の API で, フォントの ascender と descender を取得する と, 漢字やかなの部分のグリフの部分のそれらの値はとれないでしょう. 個々 のグリフの BoudingBox を取得できるなら, 罫線素片の BoundingBox を取得 して, それから求めるしかないかもしれません. -- Takanori Uchiyama, Ph.D. Dept. Applied Physics & Physico-Informatics, Fac. Science & Technology, KEIO University