SerenityOS 界面文案规范指南:Text.md 全文解读与 LibGUI 源码印证

发布时间:2026/9/10 22:05:10
SerenityOS 界面文案规范指南:Text.md 全文解读与 LibGUI 源码印证 SerenityOS 界面文案规范指南Text.md 全文解读与 LibGUI 源码印证【免费下载链接】serenityThe Serenity Operating System 项目地址: https://gitcode.com/GitHub_Trending/se/serenity本篇指南基于 SerenityOS 仓库中的 Documentation/HumanInterfaceGuidelines/Text.md 展开系统讲解 SerenityOS 用户界面文本按钮、菜单、标签、消息框等的两套大小写规则与省略号Ellipsis使用约定。文章在完整继承原文档全部规则与示例的基础上结合 Userland 下 LibGUI 与各应用的源码实现逐一印证这些规范在实际界面中的落地方式帮助开发者在为 SerenityOS 编写应用界面时写出风格统一、符合系统气质与用户习惯的文案。概述为什么界面文案需要规范在 SerenityOS 这样一套从零构建的操作系统中用户界面文本是用户与系统交互的第一语言。文案的大小写风格是否统一、省略号用得是否恰当直接影响界面观感与操作预期的一致性。为此SerenityOS 在 Human Interface GuidelinesHIG中给出了明确的书面规范约束按钮、菜单、窗口标题、状态栏、消息框等各类界面元素上的文字表达。原文档Text.md篇幅精炼但包含两条核心规则大小写Capitalization与省略号Ellipses。下文逐一展开并到源码中寻找真实用例。大小写规范两种风格两套场景SerenityOS 的界面文本统一采用两种大小写风格且每种风格都有严格限定的适用场景两者不可混用Book title capitalization书籍标题式大小写Sentence-style capitalization句子式大小写Book title capitalization书名标题式在这种风格下第一个词与最后一个词的首字母大写中间所有词的首字母也大写但以下三类词除外冠词articlesa、an、the七个并列连词coordinating conjunctionsfor、and、nor、but、or、yet、so不超过四个字母的介词prepositionsat、by、for、with、into 等原文档示例Create New LayerCopy URLMove to FrontSave and ExitSort by Name注意其中 Save and Exit 中的 and、Move to Front 中的 to、Sort by Name 中的 by 均保持小写正是上述短介词与连词小写规则的直观体现。适用场景Book title capitalization 仅用于以下界面元素按钮文本Button text图标标签Icon labels菜单名称Menu names菜单项Menu items标签页标题Tab titles窗口标题Window titles工具提示Tooltips源码印证在仓库源码中这些场景均能找到符合该风格的实现按钮与菜单项Userland/Applications/TextEditor/MainWidget.cpp 中新建New、打开Open、保存Save、另存为Save As等动作同时挂入工具栏与文件菜单采用的就是首词大写的书名标题式风格。动作文本Userland/Applications/FileManager/main.cpp 创建 Open 动作Userland/Applications/Browser/Tab.cpp 中右键菜单动态设置为 Copy Email Address、Copy Phone Number、Copy URL均保持首字母大写的标题式风格其中的 是键盘助记符不影响大小写规则。图层命名Userland/Applications/PixelPaint/ImageEditor.cpp 新建图层时以 New Layer 命名与规范示例完全一致。Sentence-style capitalization句子式这种风格遵循基础英语句子的大小写规则首词首字母大写专有名词、星期等专名首字母大写其余一律小写。原文档示例An error occurredUse system defaultsCopy the selected textEnable Linux compatibility hacks适用场景Sentence-style capitalization 用于以下界面元素复选框标签Check box labels分组框标签Group box labels列表项List items消息如消息框中的提示文字Messages单选按钮标签Radio button labels状态栏文本Status bar text文本框标签Text box labels源码印证复选框Userland/Applications/PixelPaint/CreateNewImageDialog.cpp 中 Use these settings as default、Userland/Applications/PixelPaint/Tools/EraseTool.cpp 中 Use secondary color都是首词大写、其余小写的句子式风格。状态栏文本Userland/Libraries/LibGUI/Statusbar.cpp 的set_text接口承载状态栏文案状态栏属于句子式场景因此显示的内容按句子规则书写。消息框文案Userland/Libraries/LibGUI/MessageBox.cpp 中未保存更改提示的正文由try_append逐段拼装Save changes to ... before closing?并追加 Last saved ... ago. 这类完整句子属于典型的消息文本句子式写法。省略号规范三种点两种使命省略号Ellipsis即连续的三个点...在 SerenityOS 界面中有两种截然不同的职能Eliding text文本截断由程序自动执行当文本超出可用空间时以省略号代替被裁掉的内容。Foreshadowing additional user input预示后续输入需要作者在手动书写文案时谨慎把握。第一种是程序行为不需要人工干预第二种才是本文规范讨论的重点。何时必须使用省略号凡是表示某个动作尚未完成、还需要用户进一步输入的控件文本必须以省略号结尾。判断标准是打开一个新窗口本身并不能成为使用省略号的理由只有当这个对话框是完成该动作过程中的中间步骤时才允许且应当加省略号。这一规则与动作立即生效型按钮如 Save、Delete形成清晰区分点击后动作立刻完成的按钮不加省略号点击后弹出后续交互窗口的按钮加省略号。原文档示例Save As...Browse...Insert Emoji...克制使用避免混淆省略号在其他场合应尽量少用以免与文本截断产生的省略号混淆——用户看到...时无法区分是还有下一步还是文字被裁掉了。源码印证Save As...Userland/Libraries/LibGUI/MessageBox.cpp 中未保存更改对话框的按钮文本会根据文件是否有已知路径动态切换无路径untitled document时按钮为 Save As...有路径时则为 Save。Save As... 需要用户在弹出的文件选择器中指定保存位置动作尚未完成故加省略号而 Save 会直接写回原文件动作即刻生效不加省略号。这是省略号 尚需后续输入规则最典型的源码级体现。Browse...Userland/Applications/DisplaySettings/BackgroundSettings.gml 与 Userland/Applications/Run/Run.gml 中的 Browse... 按钮均用于打开文件选择对话框属于典型的为完成动作而弹出中间步骤故保留省略号。这些字符串同样可在 Userland/Libraries/LibGUI/MessageBox.cpp 中对照try_ask_about_unsaved_changes的完整逻辑阅读对话框通过set_text动态生成正文通过按钮文本区分 Save / Save As将规范中的中间步骤原则落实为可运行代码。实践要点总结将上述规范浓缩为可操作的检查清单界面元素大小写风格省略号按钮文本Book title动作未完成且需后续输入时加菜单名 / 菜单项Book title需后续输入的菜单项加窗口标题Book title不加标签页标题 / 工具提示 / 图标标签Book title不加复选框 / 单选按钮标签Sentence-style不加分组框 / 文本框标签Sentence-style不加列表项Sentence-style不加消息框正文Sentence-style不加状态栏文本Sentence-style不加核心判断口诀标题式还是句子式看元素类型——按钮、菜单、窗口标题用标题式控件标签、消息、状态栏用句子式。加不加省略号看动作是否立即完成——点击后还需用户进一步输入的如 Save As、Browse、Insert Emoji加...点击即完成的如 Save、Open不加。少用慎用除非确属尚需输入否则不轻易使用省略号避免与程序化文本截断混淆。延伸阅读界面文案规范全文Documentation/HumanInterfaceGuidelines/Text.md消息框实现省略号规则的代码级落地Userland/Libraries/LibGUI/MessageBox.cpp状态栏组件Userland/Libraries/LibGUI/Statusbar.cpp更多界面设计指导可参考 Documentation/HumanInterfaceGuidelines 目录下的其他 HIG 文档。【免费下载链接】serenityThe Serenity Operating System 项目地址: https://gitcode.com/GitHub_Trending/se/serenity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考