作者[系统]
看板PttCurrent
标题[开发资讯] 介面调整: 列表模式导入动态分栏架构
时间Thu Oct 1 11:15:00 CST 2026
PTT 终端机画面解析注意事项
全站各列表式介面 (使用者名单、看板列表、文章列表、信件列表等)
将改版至动态分栏排版框架 (VCOL)。
若有透过画面文字、固定字元座标进行解析 (Screen Scraping)
的 App / 连线程式开发者,请及早检视并调整解析逻辑。
上线时间: PTT2 - 9/30
PTT1 - 10/4 (10/4 在 80x24 的画面会保持不变)
影响范围: 所有依赖看板列表、文章列表、信件列表、使用者名单
之资料列固定栏位座标 (例如固定以 Col 0~79 绝对字元位置切片)
进行内容撷取与状态判读的 App / Client。
说明:
为改善过往各列表硬编码固定宽度输出、无法适应不同终端机尺寸、
以及双位元组字元在栏位截断时容易破字等历史问题,系统已导入
动态分栏式输出架构 (Virtual Columns, VCOL)。
主要变更与排版原则说明如下:
1. 支援依终端机宽度动态排版
- 系统将依据使用者连线时回报的终端机宽度 (t_columns),依各栏位之
「最小宽度」、「最大宽度」与「优先权权重」动态计算配置。
- 宽萤幕终端 (如 >80 栏):
文章标题、信件标题、看板中文叙述及板主名单等内容,会自动向右
延展展开,显示更多完整资讯。
- 窄萤幕或限制环境:
系统会优先满足高优先级核心资讯,并视情况依序缩减次要内容、
或省略部分栏位 (如在空间不足时省略编号、发呆时间等)。
2. 多位元组安全截断机制
- 过往部分列表使用生硬的 byte 数截断,容易将 Big5 双位元组中文字
切半造成破字或画面乱码。
- 新架构全面导入安全的双位元组栏位截断机制,当栏宽不足以容纳完整
文字时,将在字元边界安全截断并统一以全形省略符号「…」结尾。
3. 标准 80x24 画面布局原则与後续维护
- 在最普遍的标准 80x24 终端机解析度下,系统【原则上会尽量维持原有
经典排版与视觉体验不变】。
- 然而,为了改善旧代码中残留的标题与数值未对齐、历史栏位位移等
显示瑕疵,开发团队日後会不定期视实际排版情况进行各种小调整
(例如:加减空白分隔符、文字对齐方向微调、防折行栏位边界微调等)。
- 【此类微幅排版、空格加减或栏位对齐之小调整,日後将不再另行公告】。
* 给第三方程式开发者的建议
1. 请勿写死绝对座标 (Hardcoded Columns):
解析文章列表、信件列表、板名清单或使用者名单时,切勿依赖固定的
「第 X 栏到第 Y 栏为某栏位」字元切片方式。
2. 建议采用弹性解析策略:
- 请改以「连续空白切分 (Whitespace Delimiter Tokenization)」、
「前後标记特徵比对」或「正规表示式 (Regular Expression)」
提取资料。
- 例如文章列表的作者帐号、推文标记、文章标题,建议以作者前後
空白特徵与标题前缀 (如 □, R:, 转, 锁) 作为锚点撷取,避免因
前置编号栏增减空白或右侧延展而抓错偏移。
3. 标题撷取请容许「…」省略号:
第三方 App 在撷取文章与看板描述时,请预先处理尾端可能出现的
「…」省略字元,勿将其视为标题本文的固有内容。
--
※ 发信站: 批踢踢实业坊(ptt.cc)