Go问答技术文章
-
Go x/image/riff 的 chunkLen 只表示块数据长度;当数据长度为奇数时,RIFF 还会补一个 padding byte。因此下一个块偏移要同时考虑 8 字节头部、数据区和对齐字节。425 收藏 -
Go sfnt.GlyphIndex 返回零且无错误通常表示缺字。本文区分解析与查询错误,给出字符映射检查函数,并比较拒绝、占位和候选字体三种处理方案。447 收藏 -
Go x/image/font/opentype 中 Size 是点值,DPI 是输出分辨率;两者共同决定 Face 的缩放比例。本文用源码关系、Metrics、GlyphBounds 和绘制坐标说明为什么字号不变时修改 DPI 会让字形变大,并给出参数选择策略。456 收藏 -
Go x/text/width 提供的是 Unicode 宽度属性分类,不是字体渲染后的屏幕像素测量。本文区分 width.Kind、rune、UTF-8 字节数和布局引擎,并给出按目标选择 API 的排查方法。492 收藏 -
Go x/text/unicode/bidi 处理的是逻辑顺序到视觉顺序的双向文本布局,不是把 UTF-8 字节倒序。本文说明 Paragraph.Order、Ordering、Run 与 ReverseString 的职责边界,并给出混合方向文本的处理方式。309 收藏 -
Go transform 的 ErrShortDst 表示输出空间不足。本文区分容量信号与输入校验,说明返回计数、连续状态及零进展处理,并给出完整转换函数。312 收藏 -
Go x/text/unicode/norm 的 NFKC 会先做兼容分解,再做规范组合,因此全角、带圈数字、上标和连字等字符可能改变外观。本文说明变化原因、Go 写法与不应使用 NFKC 的语义边界。336 收藏 -
Go x/text/secure/precis 的用户名 profile 会按 PRECIS 规则完成字符串准备、强制和比较,因此输入字符可能被映射、折叠或因不允许而返回错误。本文说明 UsernameCaseMapped 与 UsernameCasePreserved 的区别,以及展示值、存储值和比较键如何分离。118 收藏 -
Go x/text/secure/bidirule 按 RFC 5893 实现双向文本规则。本文说明混合左右方向字符为何可能不合法,拆解 LTR/RTL 标签、EN/AN 数字冲突、末尾字符约束,并给出 ValidString 与 Transformer 的 Go 用法。183 收藏 -
Go x/text/search 的匹配规则可以按语言处理大小写、重音和宽度,但 IndexString 返回的 start/end 仍应按原始 UTF-8 字节偏移使用。本文说明如何切取原文,并安全转换为 rune 下标。322 收藏 -
Go runes.ReplaceIllFormed 会将非法 UTF-8 字节替换为 U+FFFD。本文说明字节变化与无损解码的区别,给出原始副本和显示文本分离的示例,并解释批量与分块处理限制。451 收藏 -
Go x/text/number 的 Percent 把 1.0 定义为 100%,所以 0.12 会显示为 12%。本文区分比例与百分数输入,说明语言环境、小数位选项和重复放大的排查边界。189 收藏 -
x/text/message 的 Sprintf 不是简单改名版 fmt.Sprintf:Printer 会按语言标签处理数字格式,格式串还可能作为翻译键。本文用最小 Go 示例说明差异、# 标志、Key 和回退边界。374 收藏 -
Go x/text/language 的 Matcher.Match 返回值可能带有 -u-rg- 等扩展字段,这是把用户地区设置带入匹配结果的设计。本文区分返回 Tag 与 index 的用途,并给出资源绑定示例。108 收藏 -
UTF-32 的四字节单元仍可能是代理项、超范围值或被错误字节序解释。本文给出固定小端的严格导入示例,说明默认解码替换行为、BOM 策略和失败偏移。462 收藏