
1. 先搞清楚Allegro里的汉字丝印为什么总要折腾Cadence Allegro插入汉字丝印这件事看起来只是放几个中文字但在实际项目里经常把硬件工程师卡住。Allegro自带的矢量字体对英文和数字很友好遇到中文却可能显示方框、问号或者干脆变成乱码。尤其是工业控制板、电源模块、工装治具板客户往往要求丝印上出现中文型号、警告语、公司简称甚至装配方向说明。这篇分享面向已经会基本操作的PCB设计人员也适合刚接触Allegro的新手。我会把几种可行方案拆开讲清楚TrueType字体直排、DXF轮廓导入、Skill脚本批量转换并把线宽、高度、层、Gerber输出、制造反馈这些坑一起说透。你不需要全部用上但至少要能在项目里选一条稳妥路线。1.1 Allegro自带文本体系的边界Allegro PCB Editor里的文字大致分两类一类是软件内置的矢量字也叫Stroke字体另一类是TrueType字体。矢量字的特点是用线段描出笔画文件小、输出稳定、制造厂喜欢但它的字符集基本只覆盖ASCII也就是英文、数字和常用符号。汉字有几万个字形Allegro不可能全部内置所以直接选矢量字输入“电源输入”结果就是问号、方框或者空白。TrueType字体则是调用操作系统里的字体文件理论上只要系统装了中文字体就能显示中文。但TrueType在Allegro里的支持是分版本的16.6及更早版本对中文TrueType支持很弱17.2以后才逐渐好用。另一个关键点是TrueType文字输出Gerber时往往不是简单的线段而是填充轮廓或者多边形制造厂拿到后可能反馈“丝印是实心块无法识别”。所以问题核心不是Allegro不能放中文而是汉字字形不在内置字体里需要借助系统字体或者外部图形转换。1.2 哪些板子真的需要汉字丝印我接触过的项目里需要汉字丝印的场景大概有几类。第一类是工业控制和电源板丝印上要标“高压危险”“电源输入”“调试口”“接地”这类安全或功能说明操作人员一眼能看懂。第二类是消费电子和家电板客户要求丝印公司简称、型号中文名甚至一句“请勿拆解”。第三类是工装治具和测试板上面要写“测试点”“治具编号”“左/右”等中文标识。第四类是封装内部比如某个模块的丝印要写“无线模块”“天线口”方便装配和维修。这些需求看起来简单但如果汉字放错层、没有镜像、线宽太细生产时就会出问题。底层丝印尤其容易翻车因为从Bottom面看文字必须是镜像的否则读出来是反的。所以每次动手前先确认文字是放在板上的Board Geometry层还是放在封装里的Package Geometry层这一步比选字体还重要。1.3 三条路线TrueType直排、DXF导入、Skill脚本目前能走通的路基本就三条。TrueType直排最快适合打样和内部标识操作就是Add Text里选TrueType中文字体输入汉字放下去。DXF导入最稳适合量产和制造要求严格的板子先在AutoCAD或类似软件里把汉字炸成线条再导入Allegro的丝印层。Skill脚本适合批量处理和公司规范统一比如你有二十个常用汉字标识每次手动放容易漏用脚本从文本文件读取自动放到指定坐标和层。三条路线没有绝对好坏关键看项目阶段和板厂要求。打样阶段我常用TrueType省时间量产前如果板厂说TrueType填充不行就换成DXF线条如果公司有统一模板就写一个Skill脚本把常用标识固化下来。下面用一张表先做个对比后面再逐条展开。方法优点缺点适用场景TrueType直排操作快文字可编辑适合快速调整版本依赖强Gerber可能变填充文件体积大打样、内部标识、非量产板DXF导入兼容16.6及以上线条可控制造友好步骤多节点多后期编辑难量产、底层镜像、复杂字体Skill脚本批量放置统一规范减少手工错误需要Skill基础调试成本高多板复用、公司标准模板2. 动手前先把参数定下来层、字体、线宽、高度2.1 层选择Board Geometry还是Package Geometry在Allegro里放汉字丝印第一件事是选对Class和Subclass。如果文字是放在整块PCB上的比如板边警告语、接口标识Class选Board GeometrySubclass选Silkscreen_Top或Silkscreen_Bottom。如果文字是放在某个封装内部的比如连接器旁边写“电源”Class必须选Package GeometrySubclass选Silkscreen_Top。这一点很多人踩过坑在封装里用Board Geometry放文字当时看着没问题一旦更新封装或者重新导入网表文字就消失了。因为封装只认Package Geometry层的内容。底层文字还要注意镜像放在Silkscreen_Bottom时Options里要勾选Mirror否则从板子背面看是反的。板厂在制作底层丝印时会按照Gerber里的镜像状态直接输出所以设计端必须保证镜像正确。我的习惯是顶层文字放完后打开3D视图或者打印预览确认从Top看是正的底层文字放完后从Bottom看也是正的。2.2 高度、线宽、字符间距怎么算汉字丝印的可读性取决于三个参数字高、线宽、字符间距。板厂常用的丝印能力是最小线宽0.15mm最小字符高度0.8mm。低于这个值生产时可能断线、糊字。我一般建议字高1.0mm到1.5mm线宽0.15mm字符间距0.2mm到0.3mm。如果是笔画密集的字比如“警”“爆”“器”字高最好放到1.5mm以上线宽0.2mm否则笔画粘连。字体选择上黑体比宋体更适合丝印因为黑体笔画粗细均匀宋体的横细竖粗在0.15mm线宽下容易断。举个实际计算例子四个字“电源输入”字高1.2mm单字宽度大约1.0mm字间距0.25mm总宽度约1.0×4 0.25×3 4.75mm。如果板边空间只有5mm这个尺寸刚好。如果空间更小可以降到字高0.8mm、线宽0.12mm但必须先和板厂确认能力。不要自己拍脑袋把线宽设成0.1mm很多板厂会直接反馈“丝印太细无法保证”。2.3 单位、精度和Text Sizes设置开始放文字前先把设计参数设好。Setup - Design Parameters - Units改成毫米mm精度选4位小数。这样后面输入坐标和尺寸不容易因为单位换算出错。然后在Setup - Text Sizes里新建一个Text Block专门给汉字丝印用。Text Block里要设置几个关键值Height是字高Line Width是线宽Char Space是字符间距Font可以选择Vector或TrueType。如果选TrueType右侧会多出字体名称选项比如SimHei、SimSun、Microsoft YaHei。我的习惯是给汉字单独建一个Text Block编号比如10和英文丝印的Block分开。这样以后要批量修改汉字大小只要改这个Block所有用它的文字都会更新。而英文丝印用默认的Block 1或2互不影响。注意Text Block里的Width参数在TrueType模式下有时是只读的因为TrueType字体的宽度由字体本身决定你只能控制高度和线宽。不同版本Allegro的界面略有差异如果找不到某个选项先去Help里搜“Text Sizes”或者看版本号17.4和16.6的菜单结构不一样。3. 方法一TrueType字体直接插入汉字丝印3.1 版本检查与字体安装TrueType直排汉字的前提是Allegro版本支持并且操作系统里有中文字体。先看Help - About确认是17.2还是更高版本。16.6虽然也能选TrueType但对中文支持不稳定有些补丁下可以有些补丁下显示方框。如果你的版本低于17.2建议直接走DXF路线不要在这里浪费时间。然后检查系统字体打开Windows的字体设置确认有SimHei、SimSun、Microsoft YaHei这类中文字体。如果Allegro的字体列表里找不到中文可能是字体没有安装或者字体名称不是Allegro能识别的英文名。比如“宋体”在系统里叫SimSun“黑体”叫SimHei“微软雅黑”叫Microsoft YaHei。放文字时优先选SimHei因为笔画均匀丝印效果好。不要选那些书法字体或者艺术字体笔画太细或者太粗制造时容易出问题。3.2 新建Text Block并选择中文字体在Setup - Text Sizes里选中一个空闲的Text Block比如10。把Height设成1.2mmLine Width设成0.15mmChar Space设成0.25mm。然后切换到Font选项卡选择TrueType再在字体列表里选SimHei。有些版本里Font选项卡叫“Font”或者“TrueType Font”点进去后有一个“Font Name”下拉框里面会列出系统字体。如果列表里没有SimHei先关掉Allegro安装字体后再重启。设置完后点OK保存。这里有个细节Text Block的编号不要和默认的1、2冲突因为默认Block可能被很多现有文字引用改了会影响全局。新建一个独立Block以后要调整汉字大小只要改这个Block。另外如果板子上汉字很多建议建两个Block一个用于顶层一个用于底层。底层Block的字高和线宽可以一样但放置时要勾选Mirror。3.3 放置文字与底层镜像Add - TextOptions面板里Class选Board GeometrySubclass选Silkscreen_TopText Block选刚才建的10。然后在命令栏输入中文比如“电源输入”回车在板子上点击放置。放置后可以用Move命令调整位置用Rotate旋转角度。如果文字要放在底层Subclass改成Silkscreen_Bottom并且一定要勾选Options里的Mirror。勾选后文字在屏幕上看起来是反的这是正常的因为从Bottom看就是正的。我见过有人忘了勾Mirror结果底层丝印做出来是反字只能飞线或者割板返工。放置时还要注意不要压到焊盘、过孔、测试点。Allegro的DRC可以检查Silk to Solder Mask后面会讲怎么开。文字放完后用Display - Color/Visibility打开Silkscreen_Top和Silkscreen_Bottom确认显示正常。如果文字显示成方框回到Text Block检查字体是否选中了中文字体或者系统字体是否丢失。3.4 输出Gerber前的检查和转换TrueType文字放好后不能直接出Gerber就完事。先做DRC检查Setup - Constraints - Mode把Silk to Solder Mask打开然后Update DRC。如果丝印压到焊盘会报错需要移动文字或删掉。然后Manufacture - Artwork新建一个Silkscreen_Top的Film把Board Geometry/Silkscreen_Top、Package Geometry/Silkscreen_Top都加进去。注意如果文字在封装里必须加Package Geometry层否则Gerber里没有。输出Gerber后用CAM350或Viewmate打开检查。如果发现文字变成实心块或者制造厂反馈“丝印是填充无法识别”说明TrueType被输出成了多边形。这时候有两个选择一是和板厂确认能否接受填充丝印有些板厂可以但会加钱二是换成DXF线条法。我的经验是批量生产的板子不要赌板厂能接受直接走DXF更稳。TrueType适合打样因为打样厂通常愿意配合而且数量少文件大一点也没关系。4. 方法二DXF导入汉字轮廓量产更稳4.1 在CAD软件里把汉字变成线条DXF法的核心思路是在AutoCAD、中望CAD或者类似软件里输入汉字然后炸开成线段或多段线再导入Allegro。以AutoCAD为例新建图纸单位设为毫米。用Text命令输入“电源输入”字体选SimHei高度1.2宽度因子0.8。放好后用Express Tools里的txtexp命令炸开文字或者用Explode命令多次炸开直到文字变成多段线。然后检查线宽如果是多段线可以用Pedit命令设置全局宽度0.15mm。如果炸开后是零散线段可以用Pedit合并成多段线再设宽度。这一步很关键如果文字没有炸开导入Allegro后会变成一个块无法编辑也无法改线宽。炸开后删除多余的辅助线只保留文字轮廓。最后导出DXF版本选2007或2010不要选太新的版本Allegro 17.4对AutoCAD 2018以上支持可能有问题。导出时注意单位是毫米不要用英寸。4.2 Allegro导入DXF的图层映射在Allegro里File - Import - DXF选择刚才导出的DXF文件。对话框里DXF units选毫米然后点Edit - Layer Mapping。这里要做一个映射把AutoCAD里文字所在的图层比如“TEXT”映射到Allegro的Board Geometry/Silkscreen_Top。如果暂时不确定也可以先导入到Board Geometry/Outline导入后再用Change命令改到丝印层。映射完成后点Import。导入后用Zoom Fit看一下文字是否在板子附近。如果坐标不对可能是DXF原点设置问题重新导出时把文字移到原点附近或者在Allegro里用Move命令移过来。导入的线条默认线宽可能是0显示很细需要用Change命令把线宽改成0.15mm。Change时选Class为Board GeometrySubclass为Silkscreen_Top然后框选所有文字线条设置Line Width为0.15。注意不要漏掉底层的镜像如果文字要放底层导入后先Change到Silkscreen_Bottom再用Mirror命令镜像。4.3 导入后的收尾线宽、闭合、删除碎片DXF导入后通常有一堆收尾工作。第一检查线宽是否统一用Change命令批量改。第二检查文字是否闭合有些炸开的文字会有缺口虽然丝印不要求完全闭合但缺口太大会影响外观。第三删除重复线、零长度线和碎片这些会导致Gerber文件里出现多余线段。第四如果文字轮廓很复杂节点数很多文件会变大可以用Compose命令把闭合轮廓转成Shape但丝印层一般不需要保持线条即可。第五再次运行DRC确认没有丝印压焊盘。第六输出Gerber前在Artwork里把Silkscreen_Top加进去检查文字是否完整。DXF法的好处是线条可控板厂拿到Gerber后看到的是普通线段不会问“为什么丝印是实心的”。缺点是编辑麻烦改一个字可能要回AutoCAD重新炸开。所以我的习惯是常用汉字做成一个DXF模板库比如“电源”“接地”“测试”“警告”用的时候直接导入不用每次重画。4.4 优缺点与适用场景DXF法最大的优点是兼容性好Allegro 16.6也能用而且输出的是线条制造厂无需特殊处理。底层镜像也容易控制导入后镜像一次即可。缺点是步骤多需要外部CAD软件而且节点多文件比TrueType大。如果板子上汉字很多比如二十个标识DXF文件会很大Allegro打开和操作也会变慢。另外DXF文字不能像TrueType那样直接在Allegro里编辑文字内容改字必须回CAD。所以DXF适合量产板、底层丝印、复杂字体以及板厂明确要求线条丝印的项目。打样阶段如果只是放两三个字我还是会用TrueType因为快。但量产前一定会换成DXF避免板厂反馈。这里提醒一句从AutoCAD导DXF时不要用“SHX”字体SHX是CAD专用的笔画字体导出后可能变成线条但有些中文字符会缺失。用TrueType字体炸开更可靠。5. 方法三Skill脚本批量放汉字丝印5.1 什么场景需要脚本如果你每个月都要画几块板每块板上都有“电源输入”“调试口”“高压危险”这些固定标识手动放不仅慢还容易漏。这时候Skill脚本就派上用场了。Skill是Allegro自带的脚本语言可以调用软件内部的API自动创建文字、设置层、设置字体、设置坐标。你可以把常用汉字写在一个文本文件里每行格式为“文字 x坐标 y坐标 层 字高 线宽”脚本读取后一次性放到板上。这样不仅快还能保证每块板的丝印参数一致。脚本特别适合公司有标准丝印库的情况比如所有板子都要放“公司简称”和“型号”脚本可以自动完成。不过Skill脚本需要一点编程基础而且不同Allegro版本的API可能有差异写完后要在测试板上验证。5.2 脚本思路与关键API脚本的基本思路是注册一个命令比如cn_silk然后读取文本文件循环调用创建文本的API。在Allegro Skill里创建文本的函数通常是axlTextCreate参数包括文字内容、层、坐标、字高、线宽、旋转角度、字体类型、字体名称。不同版本参数顺序可能略有不同写的时候要查对应版本的Skill Reference。下面给一个框架示例重点是展示结构具体参数请按你的版本调整。代码里用到了infile读取文本用gets逐行读取用parse解析坐标和层。注意代码块语言标注为skill方便区分。axlCmdRegister(cn_silk cn_silk) procedure(cn_silk() let((fp line items text x y layer height width) fp infile(cn_text.txt) when(fp while(gets(line fp) when(line ! items parseString(line ) text nth(0 items) x atof(nth(1 items)) y atof(nth(2 items)) layer nth(3 items) height atof(nth(4 items)) width atof(nth(5 items)) axlTextCreate( text layer list(x y) height width 0.0 TrueType SimHei ) ) ) close(fp) ) ) )上面的代码只是框架实际使用时axlTextCreate的参数可能需要调整比如字体类型参数可能叫“fontType”字体名称可能叫“fontName”。如果运行报错先看Allegro的命令窗口提示再查Skill手册。另外文本文件里如果包含中文要确保文件编码是UTF-8或者GBK且Allegro版本能正确读取。我试过用UTF-8保存17.4可以正常读取16.6可能会乱码所以旧版本建议用DXF。5.3 脚本实操步骤把脚本保存为cn_silk.il放到Allegro的Skill路径下或者放在项目目录。在Allegro命令栏输入skill load cn_silk.il然后输入cn_silk脚本就会读取cn_text.txt并放置文字。文本文件内容示例电源输入 10.0 20.0 BOARD GEOMETRY/SILKSCREEN_TOP 1.2 0.15 调试口 10.0 25.0 BOARD GEOMETRY/SILKSCREEN_TOP 1.2 0.15 高压危险 10.0 30.0 BOARD GEOMETRY/SILKSCREEN_BOTTOM 1.5 0.2注意底层文字需要在脚本里加镜像参数如果axlTextCreate支持mirror参数直接在调用时传true如果不支持可以创建后再用axlMirror命令镜像。脚本批量放置后要手动检查一遍位置尤其是底层文字确认镜像正确。另外如果文字要放在封装里层要改成PACKAGE GEOMETRY/SILKSCREEN_TOP但脚本通常用于板级丝印封装内文字建议在封装编辑里手动放。5.4 注意事项版本、字体、错误处理写Skill脚本有几个坑。第一不同版本的API名称和参数可能不同17.4能跑的代码16.6不一定能跑所以脚本要先在测试板验证。第二字体名称必须和系统字体一致SimHei、SimSun这些名字不能写错。第三文本文件编码问题中文乱码会导致放出来的文字变成问号。第四脚本要有错误处理比如文本文件不存在、坐标格式错误、层不存在都要给出提示否则Allegro可能直接卡住。第五批量放置后务必用DRC检查丝印是否压焊盘脚本不会自动避让。我的建议是脚本只负责放文字位置和避让还是人工确认一遍。如果公司有标准丝印库可以把脚本和文本文件一起归档下次新板直接复用。6. 常见问题速查汉字丝印翻车现场与排查6.1 文字显示方框、问号、乱码这是最常见的问题。原因通常是字体不支持中文或者Text Block里选的是Vector字体。解决方法是打开Setup - Text Sizes把对应Block的Font改成TrueType再选SimHei或SimSun。如果字体列表里没有中文字体检查系统是否安装了中文字体或者Allegro是否以管理员权限运行。有些公司电脑装了精简版系统缺少中文字体需要手动安装。还有一种情况是文字从其他软件复制过来编码不对显示乱码。这时候删掉重打不要试图改。如果版本低于17.2直接换DXF不要在TrueType上死磕。6.2 Gerber里文字消失或变成空心文字在Allegro里显示正常但Gerber里没有通常是层映射错了。比如文字放在Package Geometry/Silkscreen_Top但Artwork里只加了Board Geometry/Silkscreen_Top。解决方法是检查Artwork的Film Control把两个层都加进去。如果文字变成空心轮廓说明TrueType被输出成了线条轮廓这在某些板厂看来是正常的但有些板厂会要求填充。这时候要么和板厂确认要么换成DXF实心线条。还有一种情况是Gerber单位设置错误文字尺寸变得极小看起来像消失。检查Artwork里的Format和Units确保和设计一致。6.3 丝印压焊盘、DRC报错丝印压焊盘是量产大忌因为丝印油墨盖在焊盘上会影响焊接。Allegro可以检查这个问题Setup - Constraints - Mode把Silk to Solder Mask打开然后Update DRC。如果报错用Move命令移动文字或者删掉部分文字。有些板子空间小实在避不开可以缩小字高或者把文字移到板边。注意有些板厂允许丝印压焊盘但要求丝印到阻焊的间距大于0.1mm具体要问板厂。我的习惯是设计阶段就打开DRC不要等到出Gerber才发现。6.4 底层文字镜像错误底层丝印必须镜像否则从Bottom看是反的。放置文字时Options里勾选Mirror文字在屏幕上看起来是反的这是正常的。如果忘了勾可以选中文字用Mirror命令镜像但要注意镜像轴。更稳妥的方法是删掉重放勾选Mirror。检查方法打开3D视图翻转板子看底层文字是否可读或者打印底层丝印从纸背面看。很多新手在这里翻车因为屏幕上看着是反的以为错了又改回去结果做出来是反的。记住底层丝印在设计端看起来必须是反的从Bottom看才是正的。6.5 文件体积暴增与制造反馈TrueType文字和DXF文字都会增加文件体积尤其是汉字笔画多、节点多。如果板子上有大量汉字Gerber文件可能从几MB变成几十MB。解决办法有几个一是减少汉字数量能用英文就用英文二是用简单的黑体不要用宋体或艺术字体三是用DXF时把闭合轮廓转成Shape减少线段数量四是输出Gerber时选择压缩格式。另外板厂可能反馈“丝印太细”“丝印填充无法识别”“丝印超出板边”这些都要提前预防。我的经验是出Gerber前自己先用CAM350看一遍确认文字清晰、线宽合适、没有压焊盘再发给板厂。现象可能原因解决文字显示方框字体不支持中文换TrueType中文字体或DXFGerber中文字消失层映射错误检查Artwork Film Control文字变成空心TrueType输出轮廓转DXF线条或与板厂确认底层文字反向未勾选Mirror删除重放勾选Mirror丝印压焊盘未做Silk to Solder Mask DRC移动文字或缩小字高DXF导入后成块文字未炸开在CAD里Explode后重新导出文件体积过大汉字节点太多简化字体减少汉字数量7. 我踩过的坑和几个实用技巧7.1 封装内汉字要用Package Geometry有一次我在封装里放汉字图省事用了Board Geometry/Silkscreen_Top当时板子上显示正常结果更新封装后文字全没了。后来才明白封装只能保存Package Geometry层的内容Board Geometry是板级层封装更新时会被清掉。所以只要文字是跟着封装走的比如连接器旁边的“电源”、模块旁边的“天线”一律用Package Geometry/Silkscreen_Top。如果文字是板级的比如板边的警告语才用Board Geometry。这个坑我踩过一次返工重放花了半天后来就养成习惯放文字前先问自己这个字是跟封装走还是跟板走。7.2 批量替换字体和线宽如果板子上已经有汉字但字体不对或者线宽太细不用一个个删。可以用Edit - Change命令在Options里选Class和Subclass然后勾选Text设置新的Text Block或者线宽框选所有要改的文字一次性替换。注意Change命令对TrueType和DXF线条的处理方式不同TrueType文字可以改Text BlockDXF线条只能改线宽和层。如果是DXF线条还要检查是否被锁定锁定的线条不能Change。另外批量修改后要重新DRC因为线宽变了可能原来不压焊盘的现在压了。7.3 输出前做一次“打印预览”Gerber输出前我习惯用File - Print Preview或者Plot命令把丝印层单独打印到PDF然后放大看文字是否清晰、方向是否正确、有没有压焊盘。这个方法比直接在Allegro里看更接近实际生产效果因为PDF里会按照线宽渲染。尤其是底层文字打印后从纸背面看如果读起来是正的说明镜像正确。这个习惯帮我避免了好几次底层文字反向的事故。另外打印预览还能发现DXF导入的碎片线条有些线在屏幕上不明显打印出来就是多余的点。7.4 保留源文件和Gerber对照不管是TrueType还是DXF我都会把源文件、Gerber和一张丝印截图放在同一个归档文件夹里。下次改板时如果板厂反馈丝印有问题可以快速对照是哪个文字、哪个层、什么线宽。尤其是DXF文字源DXF文件要保留因为Allegro里编辑起来很麻烦改字直接回CAD改DXF更快。我的归档命名规则是项目名_丝印_v1.dxf、项目名_丝印_v1.brd、项目名_丝印_v1_gerber.zip。这样下次找起来方便也避免版本混乱。最后再分享一个小技巧如果板子上有多个相同汉字比如重复的“接地”可以先用一个文字块调好字高、线宽、字体然后复制粘贴。复制时注意层和镜像顶层复制到顶层没问题底层复制到底层后一定要再确认一次Mirror状态因为复制操作有时不会自动继承镜像属性。另一个技巧是如果板厂反馈丝印太细不要急着改设计先问板厂的最小丝印线宽是多少有些板厂能做到0.1mm有些只能0.15mm。拿到准确参数后再调整比盲目改要省事得多。