日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Font Rending 的 Hint 机制对排版的影响

發布時間:2025/4/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Font Rending 的 Hint 机制对排版的影响 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

                    

Font Rending 的 Hint 機制對排版的影響【轉】

在設計一種 Font 時,設計者使用的是一個抽象的單位,叫做 EM,來源于大寫 M 的寬度(通常英文字體中大寫 M 的寬度最大)。EM 即不同于在屏幕顯示時用的像素(Pixel)也不同于打印時用的點(Point; 1/72 inch),他是一種相對單位,隨著字體和字號的不同變化。通常對于一個 12 號的字體一個 EM 的長度等于 12pt。

實際設計時會將 EM 分成更小的單位,一般成為 EM Unit,TrueType 中一般是 2048 Units = 1 EM,Type1 中一般是 1000 Unit = 1EM。假設在我們設計的字體中字母 a 的寬度為 998 Units,如果我們用 12 號字顯示它,我們得到的字寬為 12 * 998 / 2048 = 5.84765625 Point。如果我們將這個字打印到紙上,在 2000 dpi 的打印機上我們需要放置 5.84765625 / 72 * 2000 = 162.434895833 個 Dot(可以將 Dot 理解成墨滴)。而實際上我們不可能得到 0.43 個 Dot,我們只能用 162 個點來描述字母 a。如果我們將同樣的一個字母顯示在屏幕上,一般來說屏幕多為 72dpi 或 96dpi,以 96dpi 為例也字母 a 需要 5.84765625 / 72 * 96 = 7.796875 個像素來顯示,實際上我們得到的是 8 個。在排版時我們需要根據一個字符的寬度來計算下一個字符的位置,這里的問題是:由于輸出設備的限制我們永遠也不可能將字母放在理論中的位置,設備的分辨率越低結果偏差的越大。反鋸齒能夠在一定程度上緩解這個問題,但不總是能的到好的結果。

另外在字體渲染時有時候會出現這樣的問題,字母 H 的兩個豎筆畫不一樣粗,這通常跟字母在屏幕上的位置有關,為了解決類似的問題,字體設計時都會提供一些額外的信息來根據輸出設備的分辨率調整筆畫。這就是 Hint 機制,或者叫 Grid-Fitting。由于 Hint 的存在,同一個字母在不同的設備上輸出會有不同的寬度,這對排版有很大影響。所見即所得的排版要求我們在屏幕和紙上有相同的排版結果。如果我們按照理論值排版,在屏幕上我們可能會看到不美觀的輸出,參見截圖。如果我們按照屏幕 Fitting 值排版則不能夠最大化的利用字體設計師的工作,他們仔細調整過的字寬不能在紙上還原。

下圖是個程序示例(Java),展示了不同的渲染方式會得到不同的字體寬度和不同的渲染結果。圖中左右半部分分別是沒有使用反鋸齒(左)和使用反鋸齒(右)的效果,而圖中上下半部分分別是使用整數坐標(上)和使用分數坐標(下)的效果。

在圖上可以看出使用分數坐標的 M 具有不一致的間距。所有的這些都對實現“所見即所得”的排版軟件帶來了很大困難,在 FreeType 的主頁上有一些有關的文章,參見這里。其中提出了兩種解決方案:

There are two ways to achieve this: either use the scaled and unhinted glyph metrics when laying out text both in the rendering and printing processes, or simply use whatever metrics you want and store them with the text in order to get sure they are printed the same on all devices (the latter being probably the best solution, as it also enables font substitution without breaking text layouts).

為了確定主流排版/字處理軟件是如何解決這個問題的,我使用同樣的基準文檔(Tahoma 12pt 大寫 M)做了測試。在 MS Word 2007 & MS Word 2003 中的結果如下:

可以看出 MS Word 的渲染結果也有不一致的間距,另外每個 M 字符都完全相同,這意味著 MS Word 是將一個字符渲染出來,然后不斷的貼圖。這也是常見的做法,優點是速度快,不需要在每個位置重復渲染。

在 Adobe InDesign 中以高質量顯示的結果如下:

可以看出 InDesign 的渲染結果也有不一致的間距,但是明顯 Adobe 具有更好的反鋸齒算法,視覺上很難發現不同,但放大后還是能夠看得比較清楚。另外 InDesign 的每個 M 字符都不相同,也就是說 InDesign 是對每個字符單獨進行渲染,難怪效果會好。

結論

1. 使用設備無關的(高精度的)方式進行排版.

2. 顯示效果不好時,使用每個字符單獨渲染的策略.

3. 有些時候需要根據輸出設備的限制進行 Grid Fitting,比如在 AFP 中對字符的位置/寬度有很大限制.

轉載于:https://www.cnblogs.com/songtzu/p/3542301.html

總結

以上是生活随笔為你收集整理的Font Rending 的 Hint 机制对排版的影响的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女生裸体无遮挡 | 日本www在线观看 | caoprom在线| 九七伦理电影 | 夜夜艹天天干 | 久久丁香 | 中文视频一区二区 | 玖玖视频网 | 成人在线免费观看网站 | 在线免费观看的av | 大地资源高清播放在线观看 | 视频1区2区 | 欧美裸体xxxx | 免费在线观看黄网 | 国精产品一区一区三区有限公司杨 | 一区二区 亚洲 | 欧美爽妇 | 久久久精品欧美 | 久久久久久久久久一区二区三区 | av在线男人天堂 | 日本999视频| 已满十八岁免费观看全集动漫 | 国产经典自拍 | 欧美超碰在线 | 综合久久伊人 | 久久免费看少妇高潮 | 91成人精品视频 | av色成人| 天天干夜夜想 | 日本另类视频 | 日本午夜啪啪 | 亚洲男人的天堂网站 | 日韩免费二区 | 岛国午夜视频 | 黄色的网站在线 | 精品无码国产av一区二区三区 | 国产精品美女久久久免费 | 免费男女乱淫真视频免费播放 | 亚洲人成免费电影 | 国产欲妇 | 国产做爰免费观看 | 激情小说一区 | 久久亚洲无码视频 | 不卡在线一区二区 | 午夜免费福利小电影 | 国产一区二区在线视频观看 | 成年人黄色大全 | 天天人人精品 | 久久免费成人 | 欧美色欧美色 | 国产精品二区一区二区aⅴ 一卡二卡三卡在线观看 | 美国特色黄a大片 | 无码人妻久久一区二区三区不卡 | 午夜播放 | 国产一级片免费 | 成年女人免费视频 | 久久精品色欲国产AV一区二区 | 黄色片免费播放 | 一级黄色免费视频 | 西西毛片 | 在线免费观看你懂的 | 欧美日韩视频免费观看 | 免费在线观看黄色 | 免费黄色大片网站 | 免费的毛片网站 | 在线播放一级片 | av一区二区三区在线观看 | av不卡在线观看 | a级片在线| 香蕉大久久 | 六月丁香激情 | 色图综合| 夜夜骚视频 | 亚洲色图1 | 青青啪啪 | 无码国精品一区二区免费蜜桃 | 日韩a级片 | 亚洲乱码国产乱码精品精剪 | 日韩 国产 在线 | 国产精品久久av | 新版红楼梦在线高清免费观看 | 成人国产一区 | 深夜久久久 | 久久午夜场 | 欧美色图校园春色 | 日本中文字幕免费 | www.youjizz.com在线观看 | 亚洲成年人在线观看 | 亚洲一区美女 | 欧美精品久久 | 狠狠干五月 | 在线黄色免费 | 波多野吉衣在线视频 | 欧美在线观看www | 黄色91| 懂色av一区二区三区在线播放 | 奇米在线播放 | 青青草视频在线观看免费 | 一区二区激情视频 |