GcExcel V9.2 新特性揭秘:注音文字,随正文一起进 PDF

日文姓名、中文词语进了表格,往往还要多带一层小字:人名上头标着假名,生僻词上边注着拼音。这层小字在 Excel 里叫注音文字(Phonetic,也称 RubyText),跟正文是两套各自保存的数据。正文是单元格里字符串本身,注音则是给其中若干段文字做的读音标注,二者分开关着。不在界面上打开"显示拼音字段 / 注音"的开关,那层小字根本不会出现。

带注音的表格,在日本、中国市场的通讯录、图书目录和产品清单里相当常见。这类文件到了交付环节,多半要打印或转成 PDF。过去,正文能顺顺当当进 PDF,注音却不在导出范围里:同一份工作簿,文字都在,给文字注读音的小字不见了。

GcExcel V9.2(.NET 与 Java 平台)把注音纳入了 PDF 与图片导出的渲染。做法是先把单元格正文按格式和排版规则排定,再把注音画到它所标注的那段正文的最终位置上。正文落在哪里,注音就跟到哪里。

一段正文,一套旁注

先分清参与注音的是正文的哪一段。英文规格把被标注的文字称作 BaseText,指的是被注音的正文本体------它只包含被注音的文字本身,不含注音,也不含数字格式额外拼上去的前后缀。Excel 在中文、日文、韩文的文字场景里使用注音,正文与注音分开存放:一段正文可以整段配注音,也可以只在其中某几段上挂注音,正文与注音互不粘连。

渲染的触发条件并不复杂。单元格显示的是文本或富文本,注音又处于可见状态时,导出的 PDF 就会带上这层小字。数值、布尔值、错误值这类非文本的显示内容不会合成注音输出。区域设置也有限制:中文、日文、韩文(CJK)区域下才启用,与 Excel 对 CJK 注音的显示规则保持一致。

注音数据不是 V9.2 才有的,工作簿里本就带着它。注音连同字体、颜色、对齐方式等设置随文件一起保存,导出时由引擎自动读取、自动使用,不需要逐个单元格去指定。相应地,本版没有新增公开接口,沿用既有的导出流程即可------文件里有没有注音、单元格有没有打开显示,直接决定 PDF 里出不出这层小字。同一段正文放在不同单元格里,也能各自配上不同的注音,导出时各取各的数据,互不串用。

注音落在正文的哪一头

注音画在正文的哪个位置,由对齐方式决定。Excel 给注音准备了四种对齐,GcExcel V9.2 在导出时逐一照做,语义与 Excel 保持一致。

靠左最简单,注音的起点对准被标注正文片段的左缘,从那里起笔。居中是让注音悬浮在被标注片段的正上方,左右大致对称。分散则把注音均匀铺满整个被标注片段,注音与正文同宽,两端不留白,看上去像给整段文字贴了一层通栏标注。第四种不带对齐控制,规格里写作 noControl,处理也最特别:注音行不局限于被标注的那一段,单元格里其余未被注音的正文会被并进同一行注音里,一起呈现。

为把这四种差别摆清楚,演示用了同一段"日本銀行本店":只在"日本銀行"上挂注音,"本店"不加。四种对齐下,注音相对正文的起止位置一目了然------靠左贴住左缘,居中悬在正中,分散拉满整个片段,无控制时一路铺到包含"本店"的整行文字上方。

换行、旋转与竖排都不掉队

正文若永远是一行、一字不折,注音的位置很好算。现实里的单元格没这么省心:自动换行会把长文本折成数行;富文本在同一格里混用多种字体与字号;内容长了会溢出到右侧空白单元格;合并单元格让文字按整个合并区域重新对齐;旋转让文字侧立,竖排让文字一列列往下走;缩小字体填充与页面缩放又会改变字符的大小。每一种动作,都会挪动正文最终落在纸上的位置。

注音要经得住这一整套搬动。V9.2 的导出顺序是让正文先完整走一遍版式,拿到被标注片段最终占据的位置,再在这个位置上画注音。正文折到第几行、转成什么角度、缩到多小,注音都跟着实际所在处走,不再绑定单元格的原始坐标。换行后注音跟到折出的那一行;溢出时落在溢出的那部分文字上方;合并单元格里按合并后的对齐重新定位;竖排时顺着文字的走向排布。

行高列宽的自适应(AutoFit)同样把注音计入测量。单元格带着注音时,自适应得到的行高与列宽依旧成立:注音参与尺寸计算,不会被压出边界,也不至于反过来把正文撑乱。

注音的颜色,另有自己的规矩

注音的外观有自己的一套来源。它使用自身的注音字体样式,并不自动继承正文的字体;而字体的回退、加粗、斜体,以及 PDF 导出时的字体嵌入,都沿用普通正文的同一套行为。正文用什么字体、注音用什么字体,是两回事;一旦字体缺字或需要强调,二者的处理规则又是一致的。

颜色按 Excel 的注音语义解析,不是简单跟随正文最终的字色。默认情况下注音用自己的字色:正文是黑字、注音设成蓝色,导出来就是黑正文配蓝注音。条件格式把正文染成绿色时,注音依旧保持自己的蓝色------条件格式只作用于正文,不波及注音。数字格式却走另一条路:格式里用颜色代码(如「Red@」)把正文显示成红字,注音会跟随这个颜色一起变红。

同样是给字改了颜色,来源不一样,注音跟不跟就不一样。条件格式改变的是正文字色,注音保持自我;数字格式的颜色代码作用于整段显示,注音一并跟随。两条路径在导出的 PDF 里分得很清。

当正文被数字格式改写

数字格式决定一个值在格子里显示成什么样子,日期、百分比、千分位都经由它来呈现,它也能改写正文的显示。对文本来说,格式里的 @ 正是原值占位的位置,写几个 @,原值就会显示几遍;@ 之外的内容则作为固定文案拼在原值前后。格式还可以完全抛开原值,只显示另一串字面量。注音贴的是被标注的原值,这些改写便带来几个要逐个交代的细节。

原值前后拼上字面量时(形如「"prefix-"@"-suffix"」),注音仍附着在原值那一段,前后缀只是陪衬,不承接注音。文本格式让原值显示多次(例如「@ @」)时,注音只画在第一处,后面重复出现的正文不再重复标注。格式只显示字面量、把原值整个藏起来时(如「0;0;0;"literal only"」,格子里最终只看到 literal only),注音画在这段可见的字面量上。格式把正文整体隐藏时(「;;;」),格子里什么都不显示,注音自然也不画。

四例合起来是一条统一的规则:注音永远贴着"正文当前显示出来、又对应着原值"的那部分走,其余位置一概不画。

画到哪里,不画到哪里

把边界摊开看,适用范围说得很明确。只在中文、日文、韩文(CJK)区域设置下启用,只对文本与富文本单元格生效,只在 PDF 与图片导出时渲染;HTML 导出在本版不渲染注音。本版没有新增公开接口,PHONETIC 公式支持、供程序读写注音的公开对象模型、假名与拼音的生成、XLSX 读写语义的调整都不在范围内。注音完全是既有的文件内容,V9.2 负责把它正确地呈现出来。

对用 GcExcel 交付表格的团队,这一版的意义落在最朴素的一点上:带注音的姓名与词条,打印出来是什么样,转成 PDF 还是什么样。靠左、居中、分散、无控制四种注音对齐,在自动换行、旋转、竖排、合并单元格、缩小字体填充这些排版情形下都站得住,正文与注音不会在导出时走散。

SpreadJS V19.2 & GcExcel V9.2 新版本来啦!多人协同填数、报表一键出、中文环境更顺手

相关推荐
海阔天空3671 小时前
1538 万行大表从 SQL Server 搬到 MySQL:一个支持断点续传的迁移工具设计与踩坑实录
后端
狗头大军之江苏分军1 小时前
《潮水漫过十七岁》爸爸最近很忙
后端
isfox2 小时前
MapReduce Join 操作:大表关联小表用 Map 端,大表关联大表用 Reduce 端
后端
怕浪猫2 小时前
构建你自己的 AI Agent 发行版:从 Profile 定制到生产部署全流程
前端·后端·面试
程序员阿鹏2 小时前
双亲委派机制
java·jvm·数据结构·后端
65岁退休Coder3 小时前
把 Agent 框架拆开:PI 开发生产级 Harness
后端·node.js·agent
步行cgn3 小时前
Spring Bean 的生命周期详解
java·后端·spring
爱勇宝3 小时前
用了一个月 WorkBuddy,聊聊我的真实感受
前端·后端·程序员