You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostScript中用印度语言TTF转CID-Keyed字体实现文字居中

基于CID-Keyed字体的PostScript文字居中实现

本文是《从TTF转换为Type 2 CID字体(Type 42基础字体)》的续篇。

问题描述

如何编写PostScript程序,让基于CID-Keyed字体字符集生成的文字在页面中居中?

说明: CID-Keyed字体是从适用于印度语言的TrueType字体转换而来的Type 0复合字体。未经转换,PostScript程序无法访问TrueType字体。

提前致谢。


演示PostScript程序

CID-keyed字体NotoSansTamil-Regular.t42由谷歌泰米尔语Noto字体转换而来,转换方法可参考《从TTF转换为Type 2 CID字体(Type 42基础字体)》一文。

文件存放路径

  • Windows平台:将NotoSansTamil-Regular.t42放在D:\cidfonts文件夹(或自定义方便路径)
  • Linux平台:将NotoSansTamil-Regular.t42放在~/cidfonts文件夹

PostScript程序代码

在对应路径下创建center.ps文件,代码如下:

%!PS-Adobe-3.0
/CTXT {dup stringwidth pop 3 -1 roll 2 copy lt {sub neg 2 div 4 -1 roll add 3 -1 roll} {pop pop 3 1 roll} ifelse  moveto show} bind def     % Center text. usage: X Y Width <Hex String> CTX. Example-1: 36 300 500 <Hex String> CTXT and Example-2: 36 300 500 (String) CTXT
/myNoTo {/NotoSansTamil-Regular findfont exch scalefont setfont} bind def   % usage: 15 myNoTo

13 myNoTo
% தமிழ் தங்களை வரவேற்கிறது!
0 500 594 <0155017201aa019801a500030163018801a5017f01b101aa018801c20003016901b101cb00aa> CTXT

% Tamil Welcomes You!
0 450 594 <0019001d002a005e00030019004e00120030002200030024001f002f0024005b0012002a0020007a00aa> CTXT
showpage

执行命令

使用Ghostscript运行程序:

  • Windows平台:
    gswin64c.exe "D:\cidfonts\NotoSansTamil-Regular.t42" "D:\cidfonts\center.ps"
    
  • Linux平台:
    gs ~/cidfonts/NotoSansTamil-Regular.t42 ~/cidfonts/center.ps
    

执行后页面将显示两行居中文字:தமிழ் தங்களை வரவேற்கிறது!和Tamil Welcomes You!。


内容的提问来源于stack exchange,提问作者Marmayogi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:10:28