├── .editorconfig ├── .gitattributes ├── .github └── ISSUE_TEMPLATE │ ├── add-a-new-gap-analysis-topic.md │ ├── ask-a-question.md │ └── other.md ├── .gitignore ├── .pr-preview.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── EDITING.md ├── LICENCE.md ├── README.md ├── built └── script.js ├── charter └── index.html ├── echidna ├── gap-analysis ├── HOWTO.md ├── echidna-clreq-gap ├── images │ ├── 121891994-15941b80-cd14-11eb-9d3d-987090e1c009.png │ ├── 121894920-9a346900-cd17-11eb-9a43-e56339891d80.png │ ├── 142436464-b0f3262a-57e3-4571-84b9-dc99d4d95f2a.png │ ├── 142612484-70dfb492-0ba3-4af2-8b23-fd9c171ff34b.png │ ├── 142900454-84e53617-288e-4904-9fa0-e7ab2a966e79.png │ ├── 191958046-743994d0-3b44-4ccf-ae28-00e2c7076e64.png │ ├── 56195063-4c66-4170-82ee-55260a6d6431.png │ ├── 5f8d3ab0-3d08-4e6a-a189-cc210e2a6aff.png │ ├── 8789aa1f-de02-44a7-b5b8-12676dc71650.png │ ├── ccbbc11b-d9ff-404a-af41-8973ade0656d.svg │ └── dbbb980b-842b-44bc-8e12-84822b55d7b5.svg └── index.html ├── home.md ├── homepage ├── index-data │ ├── local.css │ └── translations.js ├── index.html └── index.zh-hans.html ├── images ├── en │ ├── increased-inter-character-spacing.svg │ ├── latin-90-clockwise.svg │ ├── latin-one-by-one.svg │ ├── punctuation-adjustment-space.png │ ├── romanization-basic.png │ └── solid-setting.svg ├── source │ ├── en │ │ └── increased-inter-character-spacing.ai │ └── zh │ │ └── negative-tracking.ai └── zh │ ├── biaoyin-erhua.svg │ ├── billingual-annotation.svg │ ├── fangsong.svg │ ├── group-ruby.png │ ├── heiti.svg │ ├── inline-bopomofo.gif │ ├── kaiti.svg │ ├── latin-90-clockwise-Hans.svg │ ├── latin-90-clockwise-Hant.svg │ ├── latin-one-by-one-Hans.svg │ ├── latin-one-by-one-Hant.svg │ ├── locale_punctuation.png │ ├── negative-tracking.svg │ ├── phonetic-in-both.png │ ├── pinyin-use-case.svg │ ├── punctuation-adjustment-space-hans.png │ ├── punctuation-adjustment-space-hant.png │ ├── songti.svg │ ├── symbol-of-death.png │ ├── zhuyin-1-0-1-one-symbol.svg │ ├── zhuyin-1-0-2-one-symbol-checked-tone.svg │ ├── zhuyin-1-0-3-one-symbol-neutral-tone.svg │ ├── zhuyin-1-1-one-symbol-an1.svg │ ├── zhuyin-1-2-one-symbol-o2.svg │ ├── zhuyin-1-3-one-symbol-it.svg │ ├── zhuyin-1-4-one-symbol-a.svg │ ├── zhuyin-2-0-1-two-symbol.svg │ ├── zhuyin-2-0-2-two-symbol-checked-tone.svg │ ├── zhuyin-2-0-3-two-symbol-neutral-tone.svg │ ├── zhuyin-2-1-two-symbol-xi1.svg │ ├── zhuyin-2-2-two-symbol-wo3.svg │ ├── zhuyin-2-3-two-symbol-lik.svg │ ├── zhuyin-2-4-two-symbol-le.svg │ ├── zhuyin-3-0-1-three-symbol.svg │ ├── zhuyin-3-0-2-three-symbol-checked-tone.svg │ ├── zhuyin-3-0-3-three-symbol-neutral-tone.svg │ ├── zhuyin-3-1-three-symbol-xin1.svg │ ├── zhuyin-3-2-three-symbol-zui3.svg │ ├── zhuyin-3-3-three-symbol-tioh.svg │ ├── zhuyin-3-4-three-symbol-zuo.svg │ ├── zhuyin-inline-vertical-in-horizontal.svg │ ├── zhuyin-rt.svg │ ├── zhuyin-use-case-horizontal.svg │ └── zhuyin-use-case-vertical.svg ├── index.html ├── local.css ├── others ├── JLREQ-Translation │ ├── Draft (Composite) - Ch1 緒論.pdf │ └── README.md ├── TCLREQ │ └── TCLREQ_Bobby │ │ ├── Ch 1 关于本文書 │ │ ├── 1.1 本文書之目的.html │ │ └── 1.2 本文書的執筆方針.html │ │ ├── Ch 2 中文繁體字排版 │ │ ├── 2.1 中文繁體字排版所使用文字與配置的原則.html │ │ ├── 2.2 中文繁體字排版所使用字體種類.html │ │ ├── 2.3 中文繁體字的基本排版體裁.html │ │ ├── 2.4 文字排列方向.html │ │ └── 2.5 設計版心.html │ │ ├── Ch 3 其他 │ │ ├── 3.1 標點符號與其排版處理.html │ │ ├── 3.2 中西文混排處理.html │ │ ├── 3.3 注音符號與Ruby處理.html │ │ ├── 3.4 段落整型,對齊以及段落末尾處理.html │ │ ├── 3.5 行的調整處理.html │ │ └── 3.6 標題處理(包含換頁處理).html │ │ └── 附錄 │ │ └── 附錄A 繁體中文標點符號表.html └── glossary-pinyin.csv ├── package.json ├── pnpm-lock.yaml ├── print.css ├── resources ├── echidna ├── index.html └── local.css ├── src ├── script.ts └── types │ └── index.d.ts ├── tsconfig.json ├── w3c.json └── zh ├── index.html └── locale.css /.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_size = 2 8 | indent_style = space 9 | insert_final_newline = true 10 | max_line_length = 80 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | max_line_length = 0 15 | trim_trailing_whitespace = false 16 | 17 | [COMMIT_EDITMSG] 18 | max_line_length = 0 -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | # Custom for Visual Studio 4 | *.cs diff=csharp 5 | *.sln merge=union 6 | *.csproj merge=union 7 | *.vbproj merge=union 8 | *.fsproj merge=union 9 | *.dbproj merge=union 10 | # Standard to msysgit 11 | *.doc diff=astextplain 12 | *.DOC diff=astextplain 13 | *.docx diff=astextplain 14 | *.DOCX diff=astextplain 15 | *.dot diff=astextplain 16 | *.DOT diff=astextplain 17 | *.pdf diff=astextplain 18 | *.PDF diff=astextplain 19 | *.rtf diff=astextplain 20 | *.RTF diff=astextplain 21 | *.ai filter=lfs diff=lfs merge=lfs -text 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/add-a-new-gap-analysis-topic.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Add a new gap-analysis topic / 添加新的差距分析主题 3 | about: Only those in the clreq group should use this template. / 只有 clreq 小组中的人才能使用此模板。 4 | title: Brief_description_of_the_problem 5 | labels: doc:clreq, gap 6 | assignees: '' 7 | 8 | --- 9 | 10 | This issue is applicable to most_languages. 11 | 12 | Brief_intro_illustrating_the_requirements 13 | 14 | More: 15 | - [requirements_doc]() 16 | - [etc]() 17 | 18 | 19 | IF THIS IS NOT THE ISSUE THAT IS BEING TRACKED BY THE GAP-ANALYSIS PIPELINE, ADD A POINTER TO THAT ISSUE. THE INITIAL BRIEF INTRO SHOULD REMAIN, AND MAY BE TAILORED WITH EXAMPLES RELEVANT TO THIS LANGUAGE. YOU MAY, OPTIONALLY, ALSO ADD OTHER DETAILS BELOW IF THEY ARE SPECIFIC TO THIS LANGUAGE. THEN ADD THIS: 20 | 21 | For more details, see [this GitHub issue](https://github.com/w3c/XXXX/issues/XX), which is being used to track this gap. Please add any discussion there, and not to this issue. 22 | 23 | THEN ADD THESE 2 PARAS TO THE SECOND COMMENT FIELD AND DELETE THE REST OF THIS TEMPLATE. 24 | 25 | _The first comment in this issue contains text that will automatically appear in one or more gap-analysis documents as a subsection with the same title as this issue. Any edits made to that comment will be immediately available in the Editor's draft of the document._ 26 | 27 | _**Please add any discussion to the GitHub issue being used to track this gap, and not to this issue**_ 28 | 29 | 30 | 31 | 32 | 33 | ### The GAP 34 | 35 | Description_of_the_problem_and_summary_of_test_results 36 | 37 | Brief_description_of_what_spec_says_on_the_matter 38 | [shortname](url_to_section) describe_what_it_says 39 | 40 | Gecko, Blink, and Webkit 41 | 42 | More: 43 | - [relevant_issues]() 44 | - [etc]() 45 | 46 | 47 | 48 | 49 | ### Priority 50 | Why_you_chose_the_priority 51 | 52 | 53 | 54 | 55 | 56 | ### Tests & results 57 | 58 | Interactive test, [assertion](url)
59 | I18n test suite, [section_head](url) 60 | 61 | Summarise_the_results_for_each_major_engine_only_if_useful 62 | 63 | 64 | 65 | 66 | 67 | ### Action taken 68 | Issue, [XXX](url) Closed. 69 | 70 | [Gecko](url) • [Blink](url) • [Webkit](url) 71 | 72 | 73 | 74 | 75 | ### Outcomes 76 | Brief_description_of_developments 77 | 78 | 79 | 80 | 81 | TEXT FOR THE SECOND COMMENT FIELD: ADAPT THE LINKS AS NEEDED; IF THE DOCS SPAN REPOS, BOLD THE ONE THAT IS REFERRED TO FROM THE PIPELINE 82 | _The first comment in this issue contains text that will automatically appear in one or more gap-analysis documents as a subsection with the same title as this issue. Any edits made to that comment will be immediately available in the Editor's draft of the document. Proposals for changes or discussion of the content can be made by adding comments below this point._ 83 | 84 | _Relevant gap analysis documents include:_ 85 | _[Adlam](https://www.w3.org/TR/adlm-gap#fragmentid) • [Arabic/Persian](https://www.w3.org/TR/alreq-gap#fragmentid) • [Bengali](https://www.w3.org/TR/beng-gap/#fragmentid) • [Cherokee](https://www.w3.org/TR/cher-gap#fragmentid) • [Chinese](https://www.w3.org/TR/clreq-gap#fragmentid) • [Dutch](https://www.w3.org/TR/latn-nl-gap#fragmentid) • [Ethiopic](https://www.w3.org/TR/elreq-gap#fragmentid) • [French](https://www.w3.org/TR/latn-fr-gap#fragmentid) • [**Georgian**](https://www.w3.org/TR/geor-gap#fragmentid) • [German](https://www.w3.org/TR/latn-de-gap#fragmentid) • [Greek](https://www.w3.org/TR/grek-gap#fragmentid) • [Gujarati](https://www.w3.org/TR/gujr-gap#fragmentid) • [Hebrew](https://www.w3.org/TR/hebr-gap#fragmentid) • [Hindi](https://www.w3.org/TR/deva-gap#fragmentid) • [Hungarian](https://w3c.github.io/eurlreq/gap-analysis/latn-nl-gap#fragmentid) • [Inuktitut/Cree](https://www.w3.org/TR/cans-iu-cr-gap#fragmentid) • [Japanese](https://www.w3.org/TR/jpan-gap#fragmentid) • [Javanese](https://www.w3.org/TR/java-gap#fragmentid) • [Kashmiri](https://www.w3.org/TR/arab-ks-gap#fragmentid) • [Khmer](https://www.w3.org/TR/khmr-gap#fragmentid) • [Korean](https://www.w3.org/TR/kore-gap#fragmentid) • [Lao](https://www.w3.org/TR/laoo-gap#fragmentid) • [Mongolian](https://www.w3.org/TR/mong-gap#fragmentid) • [N'Ko](https://www.w3.org/TR/nkoo-gap#fragmentid) • [Osage](https://www.w3.org/TR/osge-osa-gap#fragmentid) • [Punjabi](https://www.w3.org/TR/guru-gap#fragmentid) • [Tamil](https://www.w3.org/TR/taml-gap#fragmentid) • [Thai](https://www.w3.org/TR/thai-gap#fragmentid) • [Tibetan](https://www.w3.org/TR/tibt-gap#fragmentid) • [Uighur](https://www.w3.org/TR/arab-ug-gap#fragmentid)_ 86 | 87 | SETTING LABELS (delete before submitting) 88 | gap should already be assigned 89 | doc:... should point to each document _in this repo_ where this gap report will appear 90 | i:... should indicate the section in those documents where this will appear 91 | x:blink/gecko/webkit should be set for browser engines that don't resolve the gap (and removed when they do) 92 | x:... language or script related tags should be set for all affected languages 93 | p:... should indicate the priority of this gap 94 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/ask-a-question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Ask a question / 问一个问题 3 | about: Use to ask about how people use the language or script. / 有关如何使用中文的问题。 4 | title: Short_version_of_the_question? 5 | labels: 問題/question 6 | assignees: '' 7 | 8 | --- 9 | 10 | Ask_the_question_here_Use_pictures_and_links 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/other.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Other / 其他 3 | about: Please use links or pictures for examples and sources where possible. / 请尽可能添加链接或图片作为示例和来源。 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | 46 | [Dd]ebug/ 47 | [Rr]elease/ 48 | x64/ 49 | build/ 50 | [Bb]in/ 51 | [Oo]bj/ 52 | 53 | # MSTest test Results 54 | [Tt]est[Rr]esult*/ 55 | [Bb]uild[Ll]og.* 56 | 57 | *_i.c 58 | *_p.c 59 | *.ilk 60 | *.meta 61 | *.obj 62 | *.pch 63 | *.pdb 64 | *.pgc 65 | *.pgd 66 | *.rsp 67 | *.sbr 68 | *.tlb 69 | *.tli 70 | *.tlh 71 | *.tmp_proj 72 | *.log 73 | *.vspscc 74 | *.vssscc 75 | .builds 76 | *.pidb 77 | *.scc 78 | 79 | # Visual C++ cache files 80 | ipch/ 81 | *.aps 82 | *.ncb 83 | *.opensdf 84 | *.sdf 85 | *.cachefile 86 | 87 | # Visual Studio profiler 88 | *.psess 89 | *.vsp 90 | *.vspx 91 | 92 | # Guidance Automation Toolkit 93 | *.gpState 94 | 95 | # ReSharper is a .NET coding add-in 96 | _ReSharper*/ 97 | *.[Rr]e[Ss]harper 98 | 99 | # TeamCity is a build add-in 100 | _TeamCity* 101 | 102 | # DotCover is a Code Coverage Tool 103 | *.dotCover 104 | 105 | # NCrunch 106 | *.ncrunch* 107 | .*crunch*.local.xml 108 | 109 | # Installshield output folder 110 | [Ee]xpress/ 111 | 112 | # DocProject is a documentation generator add-in 113 | DocProject/buildhelp/ 114 | DocProject/Help/*.HxT 115 | DocProject/Help/*.HxC 116 | DocProject/Help/*.hhc 117 | DocProject/Help/*.hhk 118 | DocProject/Help/*.hhp 119 | DocProject/Help/Html2 120 | DocProject/Help/html 121 | 122 | # Click-Once directory 123 | publish/ 124 | 125 | # Publish Web Output 126 | *.Publish.xml 127 | *.pubxml 128 | 129 | # NuGet Packages Directory 130 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 131 | #packages/ 132 | 133 | # Windows Azure Build Output 134 | csx 135 | *.build.csdef 136 | 137 | # Windows Store app package directory 138 | AppPackages/ 139 | 140 | # Others 141 | sql/ 142 | *.Cache 143 | ClientBin/ 144 | [Ss]tyle[Cc]op.* 145 | ~$* 146 | *~ 147 | *.dbmdl 148 | *.[Pp]ublish.xml 149 | *.pfx 150 | *.publishsettings 151 | 152 | # RIA/Silverlight projects 153 | Generated_Code/ 154 | 155 | # Backup & report files from converting an old project file to a newer 156 | # Visual Studio version. Backup files are not needed, because we have git ;-) 157 | _UpgradeReport_Files/ 158 | Backup*/ 159 | UpgradeLog*.XML 160 | UpgradeLog*.htm 161 | 162 | # SQL Server files 163 | App_Data/*.mdf 164 | App_Data/*.ldf 165 | 166 | ############# 167 | ## Windows detritus 168 | ############# 169 | 170 | # Windows image file caches 171 | Thumbs.db 172 | ehthumbs.db 173 | 174 | # Folder config file 175 | Desktop.ini 176 | 177 | # Recycle Bin used on file shares 178 | $RECYCLE.BIN/ 179 | 180 | # Mac crap 181 | .DS_Store 182 | 183 | 184 | ############# 185 | ## Python 186 | ############# 187 | 188 | *.py[co] 189 | 190 | # Packages 191 | *.egg 192 | *.egg-info 193 | dist/ 194 | eggs/ 195 | parts/ 196 | var/ 197 | sdist/ 198 | develop-eggs/ 199 | .installed.cfg 200 | 201 | # Installer logs 202 | pip-log.txt 203 | 204 | # Unit test / coverage reports 205 | .coverage 206 | .tox 207 | 208 | # Translations 209 | *.mo 210 | 211 | # Mr Developer 212 | .mr.developer.cfg 213 | 214 | # Node.js 215 | node_modules 216 | 217 | respec-* 218 | base.css 219 | /flat.html 220 | /local-for-publishing.css 221 | /local-for_editing.css 222 | 223 | ###################### 224 | # IntelliJ 225 | ###################### 226 | .idea/ 227 | *.iml 228 | *.iws 229 | *.ipr 230 | *.ids 231 | *.orig 232 | classes/ 233 | out/ 234 | -------------------------------------------------------------------------------- /.pr-preview.json: -------------------------------------------------------------------------------- 1 | { 2 | "src_file": "index.html", 3 | "type": "respec" 4 | } -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | All documentation, code and communication under this repository are covered by the [W3C Code of Ethics and Professional Conduct](https://www.w3.org/Consortium/cepc/). 4 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Chinese translation follows / 后附中文版 2 | 3 | ## Contributions 4 | 5 | Contributions to this repository are intended to become part of the Internationalization Interest Group and Internationalization Working Group documents governed by the [Software and Document License](http://www.w3.org/Consortium/Legal/copyright-software). By committing here, you agree to that licensing of your contributions. 6 | 7 | If you are not the sole contributor to a contribution (pull request), please identify all contributors in the pull request comment. 8 | 9 | To add a contributor (other than yourself, that's automatic), mark them one per line as follows: 10 | 11 | ``` 12 | +@github_username 13 | ``` 14 | 15 | If you added a contributor by mistake, you can remove them in a comment with: 16 | 17 | ``` 18 | -@github_username 19 | ``` 20 | 21 | If you are making a pull request on behalf of someone else but you had no part in designing the feature, you can remove yourself with the above syntax. 22 | 23 | ## Copyright 24 | 25 | Copyright is a very important part of standardization activities. It allows the standards development organization to maintain vendor neutral control over a specification, and thus protect the consensus found within a Working Group. 26 | 27 | In the course of the development of materials within the W3C, Task Force Participants will make contributions. Those contributions will be integrated into the jointly developed work thus creating shared copyright on the Task Force Participant's contribution. Most W3C Specifications contain a section with acknowledgement of contributions. 28 | 29 | Task Force Participants grant to the W3C a perpetual, nonexclusive, royalty-free, world-wide right and license under any Task Force Participant's copyrights on his or her contributions, to copy, publish and distribute the contribution under a license of W3C's choosing. Additionally, the Task Force Participant grants a right and license of the same scope to any derivative works prepared by the W3C and based on, or incorporating all or part of, his or her contribution and that any derivative works of this contribution prepared by the W3C shall be solely owned by the W3C. Furthermore, the Task Force Participant understands that W3C will be able to exercise all rights as a copyright owner of Task Force Participant's contribution, including enforcement against infringers without additional agreement or notice. 30 | 31 | Nothing in this agreement restricts the Task Force Participant from using their individual contributions as they wish, even if those have later been amalgamated into joint works. Where W3C releases materials under a permissive license such as the W3C Software License or CC-BY, nothing in this agreement should be read to restrict the Task Force Participant from exercising the permissions granted by that license. The Task Force Participant represents that they are legally entitled to grant the above license. If their employer(s) have rights to intellectual property that the Task Force Participant creates that includes the contributions, they represent that they have received permission to make contributions on behalf of that employer or that the employer has waived such rights for the contributions to W3C. 32 | 33 | ## Decency 34 | 35 | The Task Force Participant will participate in the W3C Group in a decent way. Task Force Participants will refrain from defaming, harassing or otherwise offending other participants. The [Section 3.1 of the Process Document](https://www.w3.org/2015/Process-20150901/#ParticipationCriteria) applies, as does the W3C [Code of Ethics and Professional Conduct](https://www.w3.org/Consortium/cepc/). 36 | 37 | The Task Force Participant will refrain from sending unsolicited commercial messages to W3C mailing-lists and other promotional activities for personal matters or for third parties. This is especially required from Task Force Participants sending messages to public W3C Groups. 38 | 39 | # Chinese translation (中文版) 40 | 41 | 注:本译文不是官方文档,仅供参考。 42 | 43 | ## 关于贡献 44 | 45 | 对此仓库的贡献旨在成为使用[软件和文档许可](http://www.w3.org/Consortium/Legal/copyright-software)的国际化兴趣组和国际化工作组文档的一部分。通过在此承诺,您同意您的贡献许可。 46 | 47 | 如果您不是该贡献(pull request)的唯一贡献者,请在pull request的评论中列出所有贡献者。 48 | 49 | 要添加一个除了您之外的贡献者,请用如下格式每行列出一个贡献者的GitHub用户名: 50 | 51 | ``` 52 | +@github_username 53 | ``` 54 | 55 | 如果您错误地添加了贡献者,可以在评论中删除他们: 56 | 57 | ``` 58 | -@github_username 59 | ``` 60 | 61 | 如果您代表其他人提出pull request,但您本人没有参与设计该特性(或编辑该文档),则可以使用上述语法移除自己。 62 | 63 | ## 关于版权 64 | 65 | 版权是标准化活动中非常重要的一部分,能够允许标准化组织维持规范的厂商中立性,从而保护工作组内的共识。 66 | 67 | 在W3C小组中开发文档的过程中,任务团(task force)的成员将做出贡献。这些贡献将被整合入联合开发的工作,从而为任务团成员的贡献创造共享版权。大多数W3C规范都包含一个致谢章节。 68 | 69 | 任务团成员对其贡献的版权授予W3C永久、非排他性、免版税的全球权利和许可,以W3C选择的许可证复制、发布和分发其贡献。此外,任务团成员授予W3C版权和许可的作品、基于或包含该作品的全部或部分内容,以及由W3C编辑的该作品的任何衍生作品应完全由W3C拥有。此外,任务团成员理解W3C将能够行使作为任务团成员贡献的版权所有者的所有权利,包括在不通知任务团成员的情况下对侵权者采取法律措施。 70 | 71 | 本协议中没有任何内容限制任务团成员按照自己的意愿使用他们的个人贡献,即使这些贡献后来被并入联合作品中。如果W3C根据一个宽松的许可协议(如W3C软件许可证或 CC-BY)发布文档,则本协议中的任何内容不应被理解为会限制任务团成员行使该许可证授予的权利。任务团成员声明他们在法律上有权授予上述许可。如果任务团成员的雇主拥有的知识产权包含任务团成员的贡献,则任务团成员声明他们已经获得代表该雇主作出贡献的许可,或者雇主已为向W3C作出贡献放弃了这部分知识产权。 72 | 73 | ## 得体 74 | 75 | 任务团成员须以得体的方式参与W3C小组,避免诽谤、骚扰或以其他方式冒犯其他参与者。参与任务团的工作适用[W3C 流程文档第 3.1 节](https://www.w3.org/2015/Process-20150901/#ParticipationCriteria)与[W3C 职业道德与行为守则](https://www.w3.org/Consortium/cepc/)。 76 | 77 | 任务团成员不允许向W3C的邮件列表等平台因个人或第三方原因发送未经许可的商业信息,尤其是向W3C工作组的公共邮件列表。 -------------------------------------------------------------------------------- /EDITING.md: -------------------------------------------------------------------------------- 1 | # Editorial guidelines | 编辑指南 2 | Combining the English and Chinese text in one document makes it much easier to develop and maintain content in both languages in parallel. However, it is important to follow certain steps when creating or editing the source text. 3 | 4 | (Note that the English version will be the authoritative version, since it is more widely accessible to developers around the world.) 5 | 6 | 同時包含英語及漢語的文檔結構使平行開發與內容維護得以化繁為簡。需要注意的是,W3C以英文版本为权威版本,因其更方便让世界各地的开发者閱讀。 7 | 8 | ### Creating or modifying content | 添加或修正内容 9 | 10 | When creating new content, you should always create markup for both English and Chinese versions. 11 | 12 | 添加新的内容文本時,请務必同時建立英文与中文的元素標記。 13 | 14 | For example: 15 | 例如: 16 | 17 | ```html 18 |

The same text in English.

19 |

此為漢語文本。

20 | ``` 21 | 22 | If you are able to create text in both English and Chinese, please do so. If you are only able to create text in one language, still create the dual structure in markup, but put the same text in both places. Then add `class="translateme"` to the text that needs translation. 23 | 24 | 若您可以書寫英、中文二種語言,請同時創建這二種語言的文本;若您只能書寫其中一種语言,请保持英、中文的元素標記结构,將单一语言添加在这两段標記中,並為該段落添加`class="translateme"`類別来提醒其他志愿者翻译此段落。 25 | 26 | For example: 27 | 例如: 28 | 29 | ```html 30 |

此為漢語文本。

31 |

此為漢語文本。

32 | ``` 33 | 34 | If you change existing text, and if that change requires a change in the parallel translation but you are unable to do so, add `class="retranslateme"` to the text that needs to be updated. 35 | 36 | 如果您打算修正現有的内容,并且該内容的另一个语言版本需要同时更新翻译,请您更新翻译或添加`class="retranslateme"`類別,提醒其他志愿者翻译此段落。 37 | 38 | For example: 39 | 例如: 40 | 41 | ```html 42 |

Text in English.

43 |

此為更新後的漢語文本。

44 | ``` 45 | 46 | If you need someone to check the translation you provided, add `class="checkme"` to the relevant tag. 47 | 48 | 如果您需要其他人检查您提供的翻译,请在相关标签中添加`class="checkme"`類別。 49 | 50 | For example: 51 | 例如: 52 | 53 | ```html 54 |

Text in English.

55 |

此為漢語文本。

56 | ``` 57 | 58 | The class names listed above produce special colouring effects in the displayed document. 59 | 60 | 上面列出的类所标记的元素在网页中会用特殊的颜色显示。 61 | 62 | When text highlighted by the `translateme`, `retranslateme`, or `checkme` class is updated to a final translation, the class should be removed. 63 | 64 | 当标记为`translateme`、`retranslateme`或`checkme`的高亮文本更新为最终翻译时,请移除该类。 65 | 66 | ### Markup tips | 標記小提示 67 | 68 | Here are some tips on how to maintain the parallel language structure in markup. The principles in these example approaches should be extended to other markup as needed. 69 | 70 | 此文檔以元素標記来维护双重语言結構,下面是一些協助您依此原則進行編輯的小提示。在需要時,請自行擴展各原則中的範例標記。 71 | 72 | - The English text should always come before its corresponding Chinese text. 73 | 74 | 英文内容永遠置於中文内容前方。 75 | 76 | - List elements need `p` elements inside them, and link anchors must go on the `li` tag. 77 | 78 | 列表元素中,請使用`p`元素。链接锚点必须位于`li`标签上。 79 | 80 | ```html 81 |
  • 82 |

    这是中国的文字。

    83 |

    这是中国的文字。

    84 |
  • 85 | ``` 86 | 87 | - Headings should use `span`s for `zh` and `en` versions, and there should be a line break between spans. 88 | 89 | 标题內应以`span`元素来分別包裹`zh`和`en`語言,两者间应有一个换行。 90 | 91 | ```html 92 |

    93 | My heading 94 | 我的标题 95 |

    96 | ``` 97 | 98 | - Attribute `id`s should go on `section` elements, not `h[1-6]` elements. 99 | 100 | 屬性`id`應跟随`section`元素,而非`h[1-6]`元素。 101 | 102 | ```html 103 |
    104 |

    105 | English heading 106 | 漢語標題 107 |

    108 | … 109 | ``` 110 | 111 | - Attribute `id`s on `dfn` elements should start with `xxdef`, where `xx` is either `zh` or `en`. 112 | 113 | 在`dfn`元素里的屬性`id`应该以`xxdef`开始,`xx`隨語言的不同作`zh`或`en`。 114 | 115 | ```html 116 |

    The term is a technical word.

    117 |

    这个词汇是一个技术用语。

    118 | ``` 119 | 120 | - `figcaption`s should use `span`s for the different language versions. 121 | 122 | `figcaption`元素应以`span`元素来标示不同语言。 123 | 124 | ```html 125 |
    126 | 127 | 128 |
    129 | English caption 130 | 漢語說明 131 |
    132 |
    133 | ``` 134 | 135 | - Use the following markup for Unicode codepoint names: 136 | 137 | 请使用以下標記来表示Unicode碼位名稱: 138 | 139 | ```html 140 | U+3002 IDEOGRAPHIC FULL STOP [。] 141 | ``` 142 | 143 | - To link to a section, use the ReSpec feature, ie. link to the id on the `section` tag using the [[[ ]]] syntax. 144 | 145 | 要链接到某个章节,请使用ReSpec特性,也就是使用[[[ ]]]语法链接到`section`标签上的id。 146 | 147 | ```html 148 | [[[#mySectionId]]] 149 | ``` 150 | 151 | - To link to a figure, use the ReSpec feature, ie. link to the id on the `figure` tag using the [[[ ]]] syntax. 152 | 153 | 要链接到某个图片,请使用ReSpec特性,也就是使用[[[ ]]]语法链接到`figure`标签上的id。 154 | 155 | ```html 156 | [[[#myFigureId]]] 157 | ``` 158 | 159 | For additional ideas about markup and styling in Internationalization Activity documents, especially wrt inline markup conventions, see . 160 | 161 | 欲了解更多国际化标准计划文档里的標記和样式条约,尤其是行内標記的使用慣例,请查看。 162 | 163 | ### Rules for Punctuation | 标点符号用法 164 | 165 | In Traditional Chinese text, you should use single quotation marks (「」) first, followed by double quotation marks (『』). In Simplified Chinese text, you should use double quotation marks (“”) first, followed by single quotation marks (‘’). 166 | 167 | 繁体中使用先单(「」)、后双(『』)的直角引号,简体中使用先双(“”)、后单(‘’)的弯引号。 168 | 169 | ### Working on the language switching code | 语言切换功能 170 | 171 | The code for the language switching function is implemented in the following TypeScript file: 172 | 173 | 语言切换功能的代码在如下TypeScript文件内实现: 174 | 175 | ``` 176 | src/script.ts 177 | ``` 178 | 179 | The compiled file is in: 180 | 181 | 编译后的文件在: 182 | 183 | ``` 184 | built/script.js 185 | ``` 186 | 187 | Compiling the TypeScript file requires installing [Node.js](https://nodejs.org/en) and [pnpm](https://pnpm.io/), and using the following commands: 188 | 189 | 编译该文件需要安装[Node.js](https://nodejs.org/en)和[pnpm](https://pnpm.io/),并运行: 190 | 191 | ``` 192 | pnpm install 193 | pnpm build 194 | ``` 195 | 196 | ## Last-minute Pre-publication edits | 发布前的最后改动备忘录 197 | 198 | **Make the following changes to the respec file before pushing to GitHub:** 199 | 200 | **发布至GitHub前,請对respec文件進行以下改动:** 201 | 202 | 1. Change the path in following code to the location of the document that is about to be published: 203 | 204 | 將下列代碼內的路徑指向准备发布的文件路徑: 205 | 206 | ```html 207 | 208 | ``` 209 | 210 | 2. Change `previousPublishDate` to reflect the date of the last publication. 211 | 212 | 把`previousPublishDate`改为上一次发布的日期。 213 | 214 | **Make the following edits to the snapshot of the file that will be published to TR.** 215 | 216 | **对准备发布至TR的版本快照進行以下编辑:** 217 | 218 | 1. Convert the content of the `h1` tag to the following: 219 | 220 | 把`h1`标签的内容改为: 221 | 222 | ```html 223 | Requirements for Chinese Text Layout 224 | 中文排版需求 225 | ``` 226 | 227 | 2. Remove: 228 | 229 | 去除: 230 | 231 | ```html 232 | 233 | ``` 234 | -------------------------------------------------------------------------------- /LICENCE.md: -------------------------------------------------------------------------------- 1 | All documents in this Repository are licensed by contributors 2 | under the 3 | [W3C Software and Document license](https://www.w3.org/Consortium/Legal/copyright-software). 4 | 5 | -------------------------------------------------------------------------------- /built/script.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | (() => { 3 | // src/script.ts 4 | void function() { 5 | const LANG_LIST = ["en", "zh-hant", "zh-hans"]; 6 | const L10N = { 7 | "en": { 8 | // CSS selectors for elements that need text replacement 9 | selector: { 10 | "head > title": "Requirements for Chinese Text Layout", 11 | "#abstract > h2": "Abstract", 12 | "#toc > ol > li:nth-child(1) > a": "Abstract", 13 | "#sotd > h2": "Status of This Document", 14 | "#toc > ol > li:nth-child(2) > a": "Status of This Document", 15 | "#table-of-contents": "Table of Contents", 16 | ".note-title": "Note" 17 | }, 18 | // Prefix for figure captions (e.g., "Fig. 1", "Fig. 2") 19 | "fig": "Fig. ", 20 | dt: {}, 21 | dd: { 22 | "Bug tracker:": 'file a bug (open bugs)' 23 | } 24 | }, 25 | "zh-hant": { 26 | selector: { 27 | "head > title": "\u4E2D\u6587\u6392\u7248\u9700\u6C42", 28 | "#abstract > h2": "\u6458\u8981", 29 | "#toc > ol > li:nth-child(1) > a": "\u6458\u8981", 30 | "#sotd > h2": "\u95DC\u65BC\u672C\u6587\u6A94", 31 | "#toc > ol > li:nth-child(2) > a": "\u95DC\u65BC\u672C\u6587\u6A94", 32 | "#table-of-contents": "\u5167\u5BB9\u5927\u7DB1", 33 | ".note-title": "\u6CE8" 34 | }, 35 | "fig": "\u5716", 36 | "summary": "\u95DC\u65BC\u6B64\u6587\u6A94", 37 | dt: { 38 | "This version:": "\u672C\u7248\u672C\uFF1A", 39 | "History:": "\u6B77\u53F2\uFF1A", 40 | "Previous version:": "\u4E0A\u4E00\u7248\uFF1A", 41 | "Latest published version:": "\u6700\u65B0\u767C\u4F48\u8349\u7A3F\uFF1A", 42 | "Latest editor's draft:": "\u6700\u65B0\u7DE8\u8F2F\u8349\u7A3F\uFF1A", 43 | "Editors:": "\u7DE8\u8F2F\uFF1A", 44 | "Former editors:": "\u539F\u7DE8\u8F2F\uFF1A", 45 | "Participate:": "\u5354\u52A9\u53C3\u8207\uFF1A", 46 | "Feedback:": "\u53CD\u994B\uFF1A", 47 | "Contributors:": "\u8CA2\u737B\u8005\uFF1A" 48 | }, 49 | dd: { 50 | "Bug tracker:": '\u53CD\u994B\u932F\u8AA4\uFF08\u4FEE\u6B63\u4E2D\u7684\u932F\u8AA4\uFF09' 51 | } 52 | }, 53 | "zh-hans": { 54 | selector: { 55 | "head > title": "\u4E2D\u6587\u6392\u7248\u9700\u6C42", 56 | "#abstract > h2": "\u6458\u8981", 57 | "#toc > ol > li:nth-child(1) > a": "\u6458\u8981", 58 | "#sotd > h2": "\u5173\u4E8E\u672C\u6587\u6863", 59 | "#toc > ol > li:nth-child(2) > a": "\u5173\u4E8E\u672C\u6587\u6863", 60 | "#table-of-contents": "\u5185\u5BB9\u5927\u7EB2", 61 | ".note-title": "\u6CE8" 62 | }, 63 | "fig": "\u56FE", 64 | "summary": "\u5173\u4E8E\u6B64\u6587\u6863", 65 | dt: { 66 | "This version:": "\u672C\u7248\u672C\uFF1A", 67 | "History:": "\u5386\u53F2\uFF1A", 68 | "Previous version:": "\u4E0A\u4E00\u7248\uFF1A", 69 | "Latest published version:": "\u6700\u65B0\u53D1\u5E03\u8349\u7A3F\uFF1A", 70 | "Latest editor's draft:": "\u6700\u65B0\u7F16\u8F91\u8349\u7A3F\uFF1A", 71 | "Editors:": "\u7F16\u8F91\uFF1A", 72 | "Former editors:": "\u539F\u7F16\u8F91\uFF1A", 73 | "Participate:": "\u534F\u52A9\u53C2\u4E0E\uFF1A", 74 | "Feedback:": "\u53CD\u9988\uFF1A", 75 | "Contributors:": "\u8D21\u732E\u8005\uFF1A" 76 | }, 77 | dd: { 78 | "Bug tracker:": '\u53CD\u9988\u9519\u8BEF\uFF08\u4FEE\u6B63\u4E2D\u7684\u9519\u8BEF\uFF09' 79 | } 80 | } 81 | }; 82 | const $root = document.documentElement; 83 | let $$hidden = []; 84 | function arrayify(obj) { 85 | return Array.from ? Array.from(obj) : Array.prototype.slice.call(obj); 86 | } 87 | function $$(selector) { 88 | return arrayify(document.querySelectorAll(selector)); 89 | } 90 | function toggle$rootClass(lang) { 91 | $root.lang = lang === "all" ? "en" : lang; 92 | if (lang === "all") { 93 | $root.classList.add("is-multilingual"); 94 | $root.classList.remove("isnt-multilingual"); 95 | } else { 96 | $root.classList.remove("is-multilingual"); 97 | $root.classList.add("isnt-multilingual"); 98 | } 99 | } 100 | function showAndHideLang(lang) { 101 | $$hidden.forEach(function($elmt) { 102 | Object.assign($elmt, { hidden: false }); 103 | }); 104 | if (lang === "all") { 105 | return; 106 | } 107 | $$hidden = LANG_LIST.filter(function(it) { 108 | return it !== lang; 109 | }).reduce(function(result, it) { 110 | return result.concat($$('[its-locale-filter-list="' + it + '"]')); 111 | }, []).map(function($elmt) { 112 | return Object.assign($elmt, { hidden: true }); 113 | }); 114 | } 115 | function replaceBoilerplateText(lang) { 116 | const l10n = L10N[lang === "all" ? "en" : lang]; 117 | Object.keys(l10n.selector).forEach(function(s) { 118 | $$(s).forEach(function($elmt) { 119 | Object.assign($elmt, { textContent: l10n.selector[s] }); 120 | }); 121 | }); 122 | $$("figcaption, .fig-ref").forEach(function($elmt) { 123 | Object.assign($elmt.firstChild, { textContent: l10n["fig"] }); 124 | }); 125 | $$("body > div.head > details > summary").forEach(function($summary) { 126 | let originalText = $summary.dataset.originalText || $summary.textContent.trim(); 127 | let text = l10n["summary"] || originalText; 128 | if (text) { 129 | $summary.textContent = text; 130 | $summary.dataset.originalText = originalText; 131 | } 132 | }); 133 | $$("body > div.head > details > dl > dt").forEach(function($dt) { 134 | let originalText = $dt.dataset.originalText || $dt.textContent.trim(); 135 | let text = l10n.dt[originalText] || originalText; 136 | if (text) { 137 | $dt.textContent = text; 138 | $dt.dataset.originalText = originalText; 139 | } 140 | if (originalText === "Bug tracker:") { 141 | $dt.nextElementSibling.innerHTML = l10n.dd["Bug tracker:"]; 142 | } 143 | }); 144 | } 145 | window.switchLang = function(lang) { 146 | toggle$rootClass(lang); 147 | showAndHideLang(lang); 148 | replaceBoilerplateText(lang); 149 | }; 150 | function addLangAttr() { 151 | toggle$rootClass("all"); 152 | LANG_LIST.forEach(function(lang) { 153 | $$('[its-locale-filter-list="' + lang + '"]').forEach(function($elmt) { 154 | if (!$elmt.lang) { 155 | $elmt.lang = lang; 156 | } 157 | }); 158 | }); 159 | } 160 | addLangAttr(); 161 | }(); 162 | })(); 163 | -------------------------------------------------------------------------------- /echidna: -------------------------------------------------------------------------------- 1 | # ECHIDNA configuration 2 | index.html?specStatus=DNOTE&shortName=clreq respec 3 | local.css 4 | print.css 5 | built/script.js 6 | images/en/increased-inter-character-spacing.svg 7 | images/en/latin-90-clockwise.svg 8 | images/en/latin-90-clockwise.svg 9 | images/en/latin-one-by-one.svg 10 | images/en/latin-one-by-one.svg 11 | images/en/punctuation-adjustment-space.png 12 | images/en/romanization-basic.png 13 | images/en/solid-setting.svg 14 | images/zh/biaoyin-erhua.svg 15 | images/zh/billingual-annotation.svg 16 | images/zh/fangsong.svg 17 | images/zh/group-ruby.png 18 | images/zh/heiti.svg 19 | images/zh/kaiti.svg 20 | images/zh/latin-90-clockwise-Hans.svg 21 | images/zh/latin-90-clockwise-Hans.svg 22 | images/zh/latin-90-clockwise-Hant.svg 23 | images/zh/latin-90-clockwise-Hant.svg 24 | images/zh/latin-one-by-one-Hans.svg 25 | images/zh/latin-one-by-one-Hans.svg 26 | images/zh/latin-one-by-one-Hant.svg 27 | images/zh/latin-one-by-one-Hant.svg 28 | images/zh/locale_punctuation.png 29 | images/zh/negative-tracking.svg 30 | images/zh/phonetic-in-both.png 31 | images/zh/pinyin-use-case.svg 32 | images/zh/punctuation-adjustment-space-hans.png 33 | images/zh/punctuation-adjustment-space-hant.png 34 | images/zh/songti.svg 35 | images/zh/symbol-of-death.png 36 | images/zh/zhuyin-1-0-1-one-symbol.svg 37 | images/zh/zhuyin-1-0-2-one-symbol-checked-tone.svg 38 | images/zh/zhuyin-1-0-3-one-symbol-neutral-tone.svg 39 | images/zh/zhuyin-1-1-one-symbol-an1.svg 40 | images/zh/zhuyin-1-2-one-symbol-o2.svg 41 | images/zh/zhuyin-1-3-one-symbol-it.svg 42 | images/zh/zhuyin-1-4-one-symbol-a.svg 43 | images/zh/zhuyin-2-0-1-two-symbol.svg 44 | images/zh/zhuyin-2-0-2-two-symbol-checked-tone.svg 45 | images/zh/zhuyin-2-0-3-two-symbol-neutral-tone.svg 46 | images/zh/zhuyin-2-1-two-symbol-xi1.svg 47 | images/zh/zhuyin-2-2-two-symbol-wo3.svg 48 | images/zh/zhuyin-2-3-two-symbol-lik.svg 49 | images/zh/zhuyin-2-4-two-symbol-le.svg 50 | images/zh/zhuyin-3-0-1-three-symbol.svg 51 | images/zh/zhuyin-3-0-2-three-symbol-checked-tone.svg 52 | images/zh/zhuyin-3-0-3-three-symbol-neutral-tone.svg 53 | images/zh/zhuyin-3-1-three-symbol-xin1.svg 54 | images/zh/zhuyin-3-2-three-symbol-zui3.svg 55 | images/zh/zhuyin-3-3-three-symbol-tioh.svg 56 | images/zh/zhuyin-3-4-three-symbol-zuo.svg 57 | images/zh/zhuyin-rt.svg 58 | images/zh/zhuyin-use-case-horizontal.svg 59 | images/zh/zhuyin-use-case-vertical.svg 60 | -------------------------------------------------------------------------------- /gap-analysis/HOWTO.md: -------------------------------------------------------------------------------- 1 | # How to contribute to a gap-analysis document 2 | 3 | Practical steps for editing the document gap-analysis/index.html 4 | 5 | ## Describing a gap 6 | 7 | Try to keep the structure (sections, headings, etc) intact, since we rely on them to run batch processes and link from various places. If needed, we can add a new section, but it should be done in collaboration with Richard Ishida. Note that there are catch-all sections available at the end of each division which can be used for things that don't appear to fit elsewhere. 8 | 9 | The basic structure of a section in the template looks like this: 10 | 11 | ```html 12 |
    13 |

    Emphasis & highlights

    14 |

    Bold and italic are not always appropriate for expressing emphasis, and some scripts have their own unique ways of doing it, that are not in the Western tradition at all. Does this script require support for emphasising or highlighting text that cannot be achieved currently? See available information or check for currently needed data.

    15 | 16 | 17 |

    18 |
    19 | ``` 20 | 21 | The paragraph immediately after the section title is intended to give you ideas about what you should write about. It is not an exhaustive list, by any means. You should leave that text in place. The links it contains may give you additional ideas of things to describe here – they link to currently outstanding questions or spec/browser bugs relating to this topic. 22 | 23 | The `

    ` markup at the end of the section can be replaced with any HTML markup you like. You can have several paragraphs, lists, or even create level 4 (`h4`) headings. If you do that, however, you should surround the h4 heading and it's content with a `
    ` tag, so that respec works nicely. You should also add an id to the section tag, so that people can link directly to that subsection. 24 | 25 | You can see an example of a filled in section for Japanese at https://w3c.github.io/jlreq/gap-analysis/index.html#emphasis 26 | 27 | The content of a subsection should eventually contain information about what doesn't work, with the following details: 28 | 1. how the feature is broken for users (ie. what can't they do) 29 | 2. links to tests (or sometimes inline markup) or screen snaps that show the feature failing 30 | 3. a description of which applications (eg. browsers with versions) support and don't support the feature 31 | 4. pointers to the CSS or other W3C specs that relate to this feature, with descriptions of whether the gap is addressed or not 32 | 5. links to the detailed description of requirements in the lreq doc 33 | 34 | Don't go into too much detail about how a particular feature is expected to work here – that's what the lreq document is for. The two documents are intended to support each other, not duplicate content. 35 | 36 | If describing gaps for more than one language, and there is a difference in the level of support, make it clear which language is relevant to the text. 37 | 38 | ## Adding a priority 39 | 40 | Having described the gaps, you need to assign a priority to this section. To do this, add a class name to the section tag. In the template example above, replace the `tbd` with one of the following: 41 | * `ok` 42 | * `na` (not applicable) 43 | * `advanced` (needs work for advanced level support) 44 | * `basic` (needs work for basic styling support) 45 | * `broken` (basic display issues that prevent effective use of this language on the Web) 46 | 47 | The class tag will affect the colour of the block alongside the section, and add some summary text at the end of the section. 48 | 49 | Note that this priority labelling is NOT about how badly broken the feature is – it's about how the lack of the feature affects the use of the Web in this language. 50 | 51 | Basic styling is the level that would be generally accepted as sufficient for most Web pages. Advanced level support would include additional features one might expect to include in ebooks or other advanced typographic formats. There may be features of a script or language that are not supported on the Web, but that are not generally regarded as necessary (usually archaic or obscure features). In this case, the feature can be described here, but the status should be marked as OK. 52 | 53 | The decision as to what priority level is assigned to a described gap is down to the experts doing the gap analysis. It may not always be straightforward to decide. If a given section in this document refers to more than one feature that is broken, each with different impacts on Web users, the priority for the section should be the lowest denominator. 54 | 55 | A cell can be scored as OK if the feature in question is specified in an appropriate specification, and is supported by user agents. A specification that is in CR or later and has two implementations in 'major' browsers will count. This means that the feature may not be supported in all browsers yet. (At some point in the future we may try to distinguish, visually, whether support is available in a specification but still pending in major browsers or applications.) On the other hand, you may feel it's important to have more than two major browsers supporting the feature, in which case you can assign a problem status. 56 | 57 | If a section is given a class of `ok` or `na` you can leave the description blank, or you can add explanatory text. Whatever you prefer. 58 | 59 | 60 | -------------------------------------------------------------------------------- /gap-analysis/echidna-clreq-gap: -------------------------------------------------------------------------------- 1 | # ECHIDNA configuration 2 | index.html?specStatus=DNOTE&shortName=clreq-gap respec 3 | images/121891994-15941b80-cd14-11eb-9d3d-987090e1c009.png 4 | images/121894920-9a346900-cd17-11eb-9a43-e56339891d80.png 5 | images/142612484-70dfb492-0ba3-4af2-8b23-fd9c171ff34b.png 6 | images/142436464-b0f3262a-57e3-4571-84b9-dc99d4d95f2a.png 7 | images/142900454-84e53617-288e-4904-9fa0-e7ab2a966e79.png 8 | images/191958046-743994d0-3b44-4ccf-ae28-00e2c7076e64.png 9 | images/8789aa1f-de02-44a7-b5b8-12676dc71650.png 10 | images/dbbb980b-842b-44bc-8e12-84822b55d7b5.svg 11 | images/5f8d3ab0-3d08-4e6a-a189-cc210e2a6aff.png 12 | images/ccbbc11b-d9ff-404a-af41-8973ade0656d.svg 13 | -------------------------------------------------------------------------------- /gap-analysis/images/121891994-15941b80-cd14-11eb-9d3d-987090e1c009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/gap-analysis/images/121891994-15941b80-cd14-11eb-9d3d-987090e1c009.png -------------------------------------------------------------------------------- /gap-analysis/images/121894920-9a346900-cd17-11eb-9a43-e56339891d80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/gap-analysis/images/121894920-9a346900-cd17-11eb-9a43-e56339891d80.png -------------------------------------------------------------------------------- /gap-analysis/images/142436464-b0f3262a-57e3-4571-84b9-dc99d4d95f2a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/gap-analysis/images/142436464-b0f3262a-57e3-4571-84b9-dc99d4d95f2a.png -------------------------------------------------------------------------------- /gap-analysis/images/142612484-70dfb492-0ba3-4af2-8b23-fd9c171ff34b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/gap-analysis/images/142612484-70dfb492-0ba3-4af2-8b23-fd9c171ff34b.png -------------------------------------------------------------------------------- /gap-analysis/images/142900454-84e53617-288e-4904-9fa0-e7ab2a966e79.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/gap-analysis/images/142900454-84e53617-288e-4904-9fa0-e7ab2a966e79.png -------------------------------------------------------------------------------- /gap-analysis/images/191958046-743994d0-3b44-4ccf-ae28-00e2c7076e64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/gap-analysis/images/191958046-743994d0-3b44-4ccf-ae28-00e2c7076e64.png -------------------------------------------------------------------------------- /gap-analysis/images/56195063-4c66-4170-82ee-55260a6d6431.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/gap-analysis/images/56195063-4c66-4170-82ee-55260a6d6431.png -------------------------------------------------------------------------------- /gap-analysis/images/5f8d3ab0-3d08-4e6a-a189-cc210e2a6aff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/gap-analysis/images/5f8d3ab0-3d08-4e6a-a189-cc210e2a6aff.png -------------------------------------------------------------------------------- /gap-analysis/images/8789aa1f-de02-44a7-b5b8-12676dc71650.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/gap-analysis/images/8789aa1f-de02-44a7-b5b8-12676dc71650.png -------------------------------------------------------------------------------- /gap-analysis/images/dbbb980b-842b-44bc-8e12-84822b55d7b5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /home.md: -------------------------------------------------------------------------------- 1 | README.md -------------------------------------------------------------------------------- /homepage/index-data/local.css: -------------------------------------------------------------------------------- 1 | table { 2 | border-collapse: collapse; 3 | width: 100%; 4 | } 5 | th { 6 | background-color: #eee; 7 | border: 1px solid #ccc; 8 | } 9 | .date { 10 | white-space:nowrap; 11 | width: 8em; 12 | } 13 | td { 14 | font-size: 90%; 15 | padding: 0 .3em; 16 | border: 1px solid #ccc; 17 | } 18 | .labels { 19 | float: right; 20 | height: 11px; 21 | width: 11px; 22 | border-radius: 2px; 23 | margin: 3px; 24 | font-size: .2em; 25 | color: rgba(0,0,0,0.00); 26 | } 27 | #internal-links { 28 | display: none; 29 | } 30 | .hidden { 31 | display: none; 32 | } -------------------------------------------------------------------------------- /homepage/index-data/translations.js: -------------------------------------------------------------------------------- 1 | var trans = { } 2 | 3 | trans.versions = ['en'] 4 | 5 | trans.outofdatetranslations = [] 6 | 7 | trans.updatedtranslations = [] 8 | 9 | trans.unlinkedtranslations = [] -------------------------------------------------------------------------------- /images/en/latin-90-clockwise.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/en/latin-one-by-one.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/en/punctuation-adjustment-space.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/images/en/punctuation-adjustment-space.png -------------------------------------------------------------------------------- /images/en/romanization-basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/images/en/romanization-basic.png -------------------------------------------------------------------------------- /images/en/solid-setting.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/source/en/increased-inter-character-spacing.ai: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:07f7618450a52ee91952dfe01d19eefe54ad176186740c099863b1f40ba66ed6 3 | size 1226608 4 | -------------------------------------------------------------------------------- /images/source/zh/negative-tracking.ai: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:57b88a6d545a2707dc26ea1078d8f3f3a8927ae45059c5d6316d343e5b0348dd 3 | size 1424220 4 | -------------------------------------------------------------------------------- /images/zh/group-ruby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/images/zh/group-ruby.png -------------------------------------------------------------------------------- /images/zh/inline-bopomofo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/images/zh/inline-bopomofo.gif -------------------------------------------------------------------------------- /images/zh/latin-90-clockwise-Hans.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/latin-90-clockwise-Hant.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/latin-one-by-one-Hans.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/latin-one-by-one-Hant.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/locale_punctuation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/images/zh/locale_punctuation.png -------------------------------------------------------------------------------- /images/zh/phonetic-in-both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/images/zh/phonetic-in-both.png -------------------------------------------------------------------------------- /images/zh/punctuation-adjustment-space-hans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/images/zh/punctuation-adjustment-space-hans.png -------------------------------------------------------------------------------- /images/zh/punctuation-adjustment-space-hant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/images/zh/punctuation-adjustment-space-hant.png -------------------------------------------------------------------------------- /images/zh/symbol-of-death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/images/zh/symbol-of-death.png -------------------------------------------------------------------------------- /images/zh/zhuyin-1-1-one-symbol-an1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/zhuyin-1-2-one-symbol-o2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/zhuyin-1-3-one-symbol-it.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/zhuyin-1-4-one-symbol-a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/zhuyin-2-1-two-symbol-xi1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/zhuyin-2-3-two-symbol-lik.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/zhuyin-2-4-two-symbol-le.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/zhuyin-3-1-three-symbol-xin1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/zh/zhuyin-3-4-three-symbol-zuo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /others/JLREQ-Translation/Draft (Composite) - Ch1 緒論.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w3c/clreq/2526efd3a66daa35d453784f9200cb20c6cfff1d/others/JLREQ-Translation/Draft (Composite) - Ch1 緒論.pdf -------------------------------------------------------------------------------- /others/JLREQ-Translation/README.md: -------------------------------------------------------------------------------- 1 | This is the translation for JLREQ 2 | 3 | Ch1 translation by Bobby Tung -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 1 关于本文書/1.1 本文書之目的.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 14 | 15 | 16 |

    1.1 本文書之目的

    17 |

    所有的文化集團,都擁有獨自的語言、文字、書寫系統。將個別的書寫系統轉移到網路虛擬空間,對於文化資產的承繼而言,可說是資訊傳播通信技術一項非常重要的責任。

    18 |

    作為實現這責任的基礎作業,本文書整理了中文繁體字書寫系統於排版上的問題點。以明確理解前提條件。同時由於中文繁體字排版迄今尚未有明確之規範,於提示明確前提之下,我們試圖提供可行的處理方式作為實作的參考。

    19 | 20 | 21 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 1 关于本文書/1.2 本文書的執筆方針.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 18 | 19 | 20 |

    1.2 本文書的執筆方針

    21 |

    中文繁體字於排版上,與西文、日文排版有所不同。主要差異在於以下各點:

    22 |
      23 |
    1. 中文繁體字不僅橫排、也會直排。
    2. 24 |
    3. 原則上,中文排版所使用的漢字、標點符號等文字外框以正方形設計,並且將其無縫並排。
    4. 25 |
    5. 中文繁體字排版與日文排版近似,但由於文字體系之不同,而有所差異。
    6. 26 |
    27 |


    28 |

    本文書基於以上前提,主要將中文繁體字排版的特徵以以下方針解說。

    29 |
      30 |
    1. 不列舉中文繁體字排版之各項細節,而是主要處理與西文排版有所不同之項目。
    2. 31 |
    3. 對於日文排版有所說明,但中文繁體字排版有所不同之處,處理處理上的方法差異。
    4. 32 |
    5. 描述中文繁體字排版所表現的結果,以及將想要表現的結果視為問題,提出中文繁體字排版所需求的對象。同時試圖提出可如何處理的方針,但不提出具體處理的方式。
    6. 33 |
    7. 我們也盡可能地提供中文繁體字排版的實際範例,並且提供某種排版處理會運用於何種狀況的註解。
    8. 34 |
    9. 我們也對日常上不會接觸到中文繁體字排版的讀者簡單地說明各事項的使用頻率。但此頻率並非實際調查之結果,而是執筆者依照己身閱讀經驗所做出的判斷。這為日常生活上能夠接觸中文繁體字排版讀者所能做出的某種程度上之判斷,讓以外的讀者能做出使用頻率的判斷。簡單而言,呈現該排版處理事項的重要性,而並非該項資訊的確實性。例如:「中文繁體字排版除了注音符號外,不使用Ruby Annotation標註。但隨著日文輕小說的翻譯本普及,也成為一種常見的表現方式。」
    10. 35 |
    11. 考慮到未曾接觸過中文繁體字排版的讀者,盡可能地以圖解來呈現。
    12. 36 |
    13. 排版處理與容易閱讀的排版設計間的關係視為別種問題。但兩者有著不可分的關係,有些事項的解決也會同時針對兩者做出說明。但我們也在意盡可能地讓兩者在記述上作出區別。作為具體處理方式,容易閱讀的排版設計解說,盡可能地放置在註記中說明。
    14. 37 |
    15. 本文書的解說主要以書籍作為排版對象。也會於註解標示雜誌、報紙等排版的不同處理方式。但重點依然為書籍,主要是從質的角度來看,中文繁體字書籍排版有著眾多問題點,處理也有著多種樣貌。若能符合書籍的排版需求,將可應用於其他文書上頭。
    16. 38 |
    39 |


    40 | 41 | 42 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 2 中文繁體字排版/2.1 中文繁體字排版所使用文字與配置的原則.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 24 | 25 | 26 |

    2.1 中文繁體字排版所使用文字與配置的原則

    27 |

    2.1.1 中文繁體字排版所使用的文字

    28 |

    中文繁體字排版主要使用的文字為漢字。

    29 |

    註1)中文繁體字排版除了漢字外,也使用多數的標點符號。也會有與阿拉伯數字、拉丁文字、希臘文字等西文文字混用的狀況。

    30 |

    2.1.2 漢字

    31 |

    漢字與中文繁體字標點符號有著正方形的文字外框。於文字外框的正中央,有著比文字外框小的字面(反過來說,字面的上下左右與文字外框之間,有的稍微比字面大的若干空白)。文字尺寸則為這文字外框的尺寸。此外,字幅則是依照文字排列方向的文字外框大小,橫排時則為文字的寬度、直排時則是文字的高度。漢字與中文繁體字標點符號的外框為正方形,其字幅則為全形。

    32 |

    註1)標點符號有著不置於正中央的案例。

    33 |

    2.1.3 漢字的配置原則

    34 |

    漢字依行排列文字時,原則上文字外框彼此緊貼配置。

    35 |

    註1)從活字排版的時代起,中文繁體字無論直、橫文字外框彼此緊貼配置都適於閱讀。但活字排版依照文字尺寸不同,各號數之字型原模不同。目前數位字體僅採取單一原型,當文字尺寸放大時,就需要調整字距。然而中文繁體字面較日文字型小,除非在特殊狀況下,不需特別處理。另當文字尺寸縮小時,若為向量字型,則需要補正資訊來調整文字線幅;但有部分字型在文字尺寸較小時,會以點陣字型呈現,此時就不需另外調整。

    36 |

    註2)依照印刷品的內容不同,也會採用以下方式排列:

    37 |
      38 |
        39 |
          40 |
        1. 加大字距:於各字之間加入固定量的空白來排列文字。書籍排版上,遇到以下狀況時,會採用此排列方式: 41 |
            42 |
          1. 為使字數少的標題也能與字數多的標題取得平衡,而加大字距。
          2. 43 |
          3. 圖片與表格之說明文字字數少時,為取得平衡,而加大字距。
          4. 44 |
          5. 應用於字數少的詩詞時,為與版面取得平衡,而加大字距。
          6. 45 |
          7. 針對兒童書籍等,為提升易讀性時,而加大字距。
          8. 46 |
        2. 47 |
        3. 平均排列:平均分配字距,使文字列兩端能夠對齊行首與行尾。中文繁體字排版時,由於使用的漢字與標點符號皆為正方形,自然會使得文字列對齊行首與行尾。該種排列方式,主要應用於: 48 |
            49 |
          1. 當該行行尾遇到不能置於行尾的標點符號,而必須將標點符號與前一漢字移至次行時,就會於行尾產生二字(甚至以上)空白。由於中文繁體字書籍各行行尾對齊是重要的排版規則,此時就會利用平均排列將二字(以及以上)空白均分至該行各字字距。
          2. 50 |
        4. 51 |
        52 |
      53 |
    54 |
      55 |
        56 |
          57 |
            58 |
          1. 當表格標題與人名等文字數不一時,為求呈現上的一致,會採用平均排列的方式處理。
          2. 59 |
          60 |
        61 |
      62 |
    63 |
      64 |
        65 |
          66 |
        1. 減少字距:減少字與字間的字距,使得文字外框一部份重疊。這種處理方式,主要應用於: 67 |
            68 |
          1. 雜誌標題以及廣告文案字數較多,為使其排列於一行;或者為求特殊表現時使用。
          2. 69 |
          3. 由於中文繁體字皆為正方形,此方式並不適用於活字排版,故不應用於書籍標題與內文的排列上。
          4. 70 |
        2. 71 |
        72 |
      73 |
    74 | 75 | 76 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 2 中文繁體字排版/2.2 中文繁體字排版所使用字體種類.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 21 | 22 | 23 |

    2.2 中文繁體字排版所使用字體種類

    24 |

    2.2.1 中文繁體字排版經常使用的四種字體

    25 |

    中文繁體字排版時,主要使用四種字體為:

    26 |
      27 |
    1. 明體(Ming)
    2. 28 |
    3. 黑體(Hei)
    4. 29 |
    5. 楷體(Kai)
    6. 30 |
    7. 宋體(Song)
    8. 31 |
    32 |

    這四種字體於書籍排版上有其常見之使用方式,以下分別敘述其使用情境:

    33 |

    2.2.2 明體(Ming)

    34 |

    明體主要應用於內文文字,以及大標、中標上。當應用於標題時,通常會特別加強字重,令其與內文有所差異。其對應的西文為襯線字(Serif)

    35 |

    2.2.3 黑體(Hei)

    36 |

    黑體主要應用於中標、小標上。由於明體之字重差異難以辨識,故遇到內文加強語氣時,除了直接將內文需加強之文字字重加重外,常見的處理方式是置換為黑體,同時加重字重。其對應的西文為無襯線字(Sans-Serif)

    37 |

    註1)加強語氣對應至HTML標籤時,經常使用的是:<b>、<em>、<strong>。由於中文繁體字由活字排版以來,並未有使用斜體的傳統(italic/oblique),當套用這些標籤時,應儘量不予斜排。

    38 |


    39 |

    註2)依內容之不同,亦有將內文字全採黑體之狀況,但使用機率不高。

    40 |

    2.2.4 楷體(Kai)

    41 |

    楷體為帶有中文書法形態之字體。於書籍排版上,經常與內文明體混合使用。主要應用於引言、摘句、對話等屬於內文,但需特別標示之部分。其對應的西文為襯線字(Serif)

    42 |

    註1)由於考量到明體與楷體皆屬於襯線字,但於排版時經常會混合使用。故於此提案,希望將楷體對應至Cursive,以求能符合常見的排版表現。

    43 |

    註2)由於楷體字體上保留書寫筆畫,故經常用於台灣公文書、教科書之內文。

    44 |


    45 |

    2.2.5 宋體(Song)

    46 |

    宋體字體形態介於明體與楷體之間。依照內容與地區之不同,常會取代明體作為內文字。其對應的西文為襯線字(Serif)

    47 |

    註1)考量到HTML標籤<i>(italic)之意涵為具手寫呈現之字體樣式,故也能將宋體視為明體之italic表現。然而於中文繁體數位字體之實際設計上,未曾有此做法。

    48 |

    註2)宋體依照地區不同,亦有著仿宋體之別名,以台灣使用為多,中國、香港則直稱宋體。

    49 | 50 | 51 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 2 中文繁體字排版/2.3 中文繁體字的基本排版體裁.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 24 | 25 | 26 |

    2.3 中文繁體字的基本排版體裁

    27 |

    2.3.1 設計排版體裁

    28 |
      29 |
    • 中文繁體字書籍排版體裁,依以下順序設計。
    • 30 |
    • 首先,設計基礎排版體裁。
    • 31 |
    • 其次,以其為基準,進行實際頁面的設計。
    • 32 |
    33 |

    2.3.2 基礎排版體裁

    34 |

    書籍多數僅使用一種基礎排版體裁,雜誌則會使用上數種。

    35 |

    但儘管書籍僅使用一種體裁,在實際頁面的設計上,如:目錄、索引等頁面,會基於基本排版體裁重新設計。索引等頁面採用不同排版體裁設計的案例也相當多,直排書索引也會有著以橫排或者多欄排版方式呈現的案例。但在設計上,版面尺寸等依然不出基礎排版體裁。

    36 |

    雜誌則因為內容不同,排版體裁多變,文字大小、欄數依照內容不同會有所變化。

    37 |

    2.3.3 基礎排版體裁的主要元素

    38 |

    基礎排版體裁的主要元素如下。

    39 |
      40 |
    1. 完成尺寸與裝訂邊(中文繁體字書籍直排為右側裝訂、橫排為左側裝訂);
    2. 41 |
    3. 排版方向(直排或者橫排)
    4. 42 |
    5. 版心與完成尺寸的相對位置
    6. 43 |
    7. 頁眉與頁數位置
    8. 44 |
    45 |


    46 |

    註1)決定版心除了在頁面中設定長方形的空間外,也有著供內文、標題、圖片配置做為基準的格子設定。其格子設定於中文繁體字排版原則下,內文必須依照格子進行配置。在文章僅由漢字構成的狀況下,另行首、行尾對其版心之天地是中文繁體字書排版重要的原則。但在與西文混排,或者做出避頭尾點處理時,為遵從本項原則,內文可不按照格子排列。

    47 |


    48 |

    2.3.4 版心的設計元素

    49 |

    作為書籍基本設計出的排版體裁稱為版心,版心的設計元素如下。

    50 |
      51 |
    1. 所使用的文字尺寸以及字型名稱
    2. 52 |
    3. 排版方向(直排或者橫排)
    4. 53 |
    5. 分欄時,欄數以及欄距
    6. 54 |
    7. 1行的長度
    8. 55 |
    9. 1頁之行數(分欄時為1欄之行數
    10. 56 |
    11. 行距
    12. 57 |
    58 |

    2.3.5 以版心作為實際頁面的排版體裁

    59 |

    本部分說明如何以版心作為基本排版體裁來設計各頁面。

    60 |
      61 |
    1. 配置標題的空間與位置標題所使用空間之文字方向與尺寸,以版心設定的行的位置為基準,採用數行的空間來設計。標題縮排時的處理,以版心所設定的文字尺寸為基準,決定要縮排數字。
    2. 62 |
    3. 圖片之尺寸橫排時圖片,寬度盡可能地以版心的尺寸一致;若為多欄排版時,則盡可能與版心所設定的一欄寬度一致。排列時多與版心的天或者地對齊配置。直排時亦同,依照版心的天地高度、或者多欄排版下所設計單欄或者多欄的天地尺寸為基準配置。排列時亦多與版心的天或者地對齊配置。
    4. 63 |
    5. 目錄、索引、參考書目等頁面目錄、索引、參考書目等頁面以版心之尺寸作為基準設計。但有不少案例會於內文採單欄橫排時,目錄等頁採多欄設計;而目錄頁有時天地側會對文字進行縮排。
    6. 64 |
    65 | 66 | 67 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 2 中文繁體字排版/2.4 文字排列方向.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 24 | 25 | 26 |

    2.4 文字排列方向

    27 |

    2.4.1 中文繁體字的文字排列方向

    28 |
      29 |
    • 中文繁體字的文字排列方向,分為直排與橫排。
    • 30 |

    • 31 |
    32 |

    註1)中文繁體字所使用的漢字與標點符號,原則上都是正方形的文字,從活字排版的時代開始,無論直排橫排,都能使用相同的活字排列。但標點符號有部分需配合文字排列方向轉向,將於後面細述。

    33 |


    34 |

    註2)直排為中文繁體字書籍傳統的文字排列方式。但於翻譯書籍數量增加以及電腦處理文書的預設排列影響下,橫排也逐漸成為主流。在台灣,公文書採用橫排、報紙與雜誌近年也以橫排為主。但中文創作以及文學作品,如詩、小說等,依然還是採用直排。就中文繁體字直排在文化的重要性而言,我們不認為未來會有所改變。

    35 |


    36 |

    註3)中文傳統上橫排時字的排列方式是由右而左,但由於中文採線性閱讀,可由左而右讀、亦可由右而左讀,所以兩者皆可接受。但由於受到西方排版影響,橫排書籍一律由左而右排列文字。

    37 |


    38 |

    註4)一本印刷品中,原則上選擇橫排或者直排其一進行排版,但於直排時,頁眉、圖說、表格等混用橫排的狀況也很常見。同時,部分頁面,如參考書目、註釋等會改為橫排呈現。

    39 |


    40 |

    2.4.2 橫排與直排的主要差異點

    41 |

    直排與橫排的主要差異點,列舉如下:

    42 |
      43 |
    1. 文字、行、欄以及頁面配置、裝訂方向。 44 |
        45 |
      1. 直排時 46 |
          47 |
        1. 文字由上而下,行由右而左排列。
        2. 48 |
        3. 欄由上而下。
        4. 49 |
        5. 頁面由封面開始,由右向左進行配置(書為由左向右翻頁)。
        6. 50 |
      2. 51 |
      3. 橫排時 52 |
          53 |
        1. 文字由左而右,行由上而下排列。
        2. 54 |
        3. 欄由左而右。
        4. 55 |
        5. 頁面由封面開始,由左而右進行配置(書為由右向左翻頁)。
        6. 56 |
      4. 57 |
    2. 58 |
    3. 文中插入英文數字時的方向,如下: 59 |
        60 |
      1. 直排時,有著三種配置方式: 61 |
          62 |
        1. 與漢字採相同的正置方向,一字一字配置,主要為單一文字的英文與數字、縮寫時的大寫文字等。註1)與漢字採相同正置方式,一字一字配置所使用的英文與數字,使用的活字並非英文排版所用之活字、而是與漢字相同正方形、字幅固定的字體。
        2. 63 |
        3. 文字以順時鐘方向迴轉90度進行配置。主要為英文的單字、段落等。
        4. 64 |
        5. 保持正常方向,橫排處理(縱中橫排)。主要應用於2位與3位數的數字。
        6. 65 |
      2. 66 |
      3. 橫排時,以正常方向配置。
      4. 67 |
    4. 68 |
    5. 表格、圖片等標題列的位置。 69 |
        70 |
      1. 直排時,表格橫列之標題列為上方,但直行之標題列位於右側。
      2. 71 |
      3. 橫排時,表格橫列之標題列為上方,但直行之標題列位於左側。
      4. 72 |
    6. 73 |
    7. 換頁、換章時最末頁採多欄排列、行於頁面中結束時,依以下方式處理: 74 |
        75 |
      1. 直排時,順其行文結束,各欄左右行數可以不一致。
      2. 76 |
      3. 橫排時,各欄的行數需平均。但因字數不足,行數無法與欄數配合時,不足的行數於最後一欄末尾留空。註1)中文繁體字書籍,無論直排、橫排大多不分欄,這項處理多來自翻譯書籍或參考日文書籍之排版方式,故承襲日文排版需求。
      4. 77 |
    8. 78 |
    79 |


    80 | 81 | 82 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 2 中文繁體字排版/2.5 設計版心.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 23 | 24 | 25 |

    2.5 設計版心

    26 |

    2.5.1 設計版心的順序

    27 |

    中文繁體字排版,是將正方形文字的外框以彼此緊貼排列作為基本,設計出版心的尺寸,在其之上決定相對於印刷版面的版心位置。版心依照以下順序設計:

    28 |


    29 |
      30 |
    1. 決定版心尺寸 31 |
        32 |
      1. 無分欄時,需決定文字尺寸、一行的字數(即為行長)、一頁的行數以及行距。
      2. 33 |
      3. 當分欄時,需決定文字尺寸、一行的字數(即為行長)、一欄的行數、行距、欄數以及欄距。
      4. 34 |
    2. 35 |
    3. 決定相對於印刷版面,版心的配置位置。版心配置位置的設計順序有著以下方式。 36 |
        37 |
      1. 將版心置於印刷版面的正中央,天地等高、左右等寬。
      2. 38 |
      3. 橫排時指定天的留白量、直排時則指定地的留白量,左右等寬。
      4. 39 |
      5. 天地等高,指定裝訂邊的留白量。
      6. 40 |
      7. 指定裝訂邊的留白量,橫排時指定天的留白量、直排時則指定地的留白量。
      8. 41 |
    4. 42 |
    43 |


    44 |

    註1)一般而言,版心多置放於印刷版面的的正中央,然後依照版心尺寸不同,向上下、左右調整。

    45 |

    註2)這種設計方式主要承襲自活字印刷,但於桌上排版,則多以印刷版面計算與版心尺寸四方邊界之差為之。

    46 |


    47 |

    2.5.2 設計版心的注意點

    48 |

    版心於設計時需考量以下事項:

    49 |


    50 |
      51 |
    1. 決定版心尺寸時,得先考量到印刷版面尺寸與留白後進行。一般而言,版心與印刷版面會呈近於相似形的設計。
    2. 52 |
    3. 以成人為讀者製作書籍時,文字尺寸一般為10.5pt(≒3.7mm)與9pt(≒3.2mm)為多。除了特殊書籍外,最小也要有8pt(≒2.8mm)。註1)中文活字尺寸以「號」作為單位,又分新舊兩種寸法。可完整對應美制的「點(Point, pt)」,分別如下:初號=42pt、一號=27.5pt、二號=21pt、三號=15.75pt、四號=13.75pt、五號=10.5pt、六號=7.875pt、七號=5.25pt。新五號四行=36pt、新一號=24pt、新二號=18pt、新三號字=16pt、新四號=12pt、新五號=9pt註2)一般中文繁體字內文主要使用五號字(10.5pt≒3.7mm),而報紙、雜誌則使用新五號字(9pt≒3.2mm),兩種皆常為使用。而一般內文字最小使用到六號字(7.875pt≒2.8mm),若小於此號,由於漢字結構複雜,則難以閱讀。
    4. 53 |
    5. 1行的行長應為文字尺寸的整數倍,各行的位置盡可能頭尾對齊。註1)中文繁體字在不與西文混排的狀況下,所使用的文字外框皆為正方形,除段落最後一行可不對齊外,每行行首、行尾皆需對齊,這是重要的排版原則。
    6. 54 |
    7. 行與行之間的空白(行距)除特別狀況外,皆需保持一致。註1)中文繁體字會於行距間放置注音符號、翻譯書籍亦會如日文排版一般加入Ruby文字,此時行距依然需保持一致。當文書需要配置這些元素時,於設計版心之階段就須考量到這些要素來決定行距。註2)版心之行距多半介於文字尺寸之50%~100%之間,當行長較短、或文字尺寸較小時,行距設定也會相對較小。反之,行距一般不會超過文字尺寸,就算超過文字尺寸,也不會因而增加易讀性。註3)指定版心的方法中,有著不以行距,而是依行高(line-height)來設定的方法。行高就是彼此鄰接的兩行的基準點到基準點之間的距離。基準點依照處理方式而會有所不同,直排時行左右的中央線,橫排時為行上下的中央線。當配置的文字全部尺寸相同時,有著以下關係。行高=文字尺寸÷2+行距+文字尺寸÷2=文字尺寸+行距行距=行高-文字尺寸
    8. 55 |
    56 |


    57 | 58 | 59 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 3 其他/3.1 標點符號與其排版處理.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 26 | 27 | 28 |

    3.1 標點符號與其排版處理

    29 |

    中文標點符號依照地區規範不同而有差異,但中文繁體字無論台灣或者香港,表現皆一致。中文標點符號主要的特色在於皆為全型,且直排時,有些與橫排呈現相同,有些則需順時針轉向九十度。

    30 |


    31 |

    3.1.1 中文繁體字常用標點

    32 |
      33 |
    1. 句號、逗號與頓號句號[。](IDEOGRAPHIC FULL STOP)、逗號[,](FULLWIDTH COMMA)以及頓號[、](IDEOGRAPHIC COMMA),句點表示語句結束、逗點表示語氣停頓、頓號使用於並列連用、表示次序的字詞之間。這三種標點符號需置於字面中央,直排時呈現與橫排一致。排版時不應出現於行首。註1)許多中文理工書籍,由於內文有著大量英文字詞,並採用橫排。為求標點符號體例一致,也有將句號採[.](FULL STOP)、逗號與頓號採[,](COMMA)取代的案例。
    2. 34 |
    3. 冒號與分號冒號[:](FULLWIDTH COLON)、分號[;](FULLWIDTH SEMICOLON)。冒號表示引述語句開始,分號用於語句間,表示意義轉折。這兩種標點符號需置於字面中央,直排時呈現與橫排一致。排版時不應出現於行首。
    4. 35 |
    5. 驚歎號與問號驚歎號[!](FULLWIDTH EXCLAMATION MARK)與問號[?](FULLWIDTH QUESTION MARK)。驚歎號用於句末,表示驚訝,問號則表示質疑。這兩種標點符號需置於字面中央,直排時呈現與橫排一致。原則上不得出現於行首。
    6. 36 |
    7. 引號與雙引號引號,包含開始引號[「](LEFT CORNER BRACKET)與結束引號[」](RIGHT CORNER BRACKET)。雙引號,包含開始雙引號[『](LEFT WHITE CORNER BRACKET)與結束雙引號[』](RIGHT WHITE CORNER BRACKET)。引號用於強調字詞、以及作為引述話語。雙引號使用於引號內的強調字詞,以及再次引述他人話語。這兩種標點符號直排時需順時針旋轉90度。開始引號與雙引號不得出現於行末、結束引號與雙引號不得出現於行首。註1)某些出版物體例上一律使用雙引號。註2)也有使用[“](LEFT DOUBLE QUOTATION MARK)與[”](RIGHT DOUBLE QUOTATION MARK)的案例。直排時亦需順時針旋轉90度,但由於使用於直排時會造成體例不良,故鮮少使用於直排。註三)其餘引號類如:[【](LEFT BLACK LENTICULAR BRACKET)、[】](RIGHT BLACK LENTICULAR BRACKET)、[〖](LEFT WHITE LENTICULAR BRACKET)[〗](RIGHT WHITE LENTICULAR BRACKET)、[〔](LEFT TORTOISE SHELL BRACKET)、[〕](RIGHT TORTOISE SHELL BRACKET)、[[](FULLWIDTH LEFT SQUARE BRACKET)、[]](FULLWIDTH RIGHT SQUARE BRACKET)、[{](FULLWIDTH LEFT CURLY BRACKET)、[}](FULLWIDTH RIGHT CURLY BRACKET)。較少使用於中文繁體字書籍中,當用於直排時,亦須順時針旋轉90度。
    8. 37 |
    9. 夾注號中文繁體字使用的夾注號分為兩種,第一種為[(](FULLWIDTH LEFT PARENTHESIS)與[)](FULLWIDTH RIGHT PARENTHESIS),第二種為連續兩個全型[—](EM DASH),兩個全型[—]應互相連結。第二種夾注號單獨出現時稱為破折號,表示語氣延續、語意轉換。夾注號用於行內註解、說明。直排時需順時針旋轉90度。第一種夾注號開始不得出現於行末,結束不得出現於行首。第二種夾注號與破折號,兩個全型[—]不得因斷句而分離。
    10. 38 |
    11. 書名號中文繁體字使用的書名號分為三種,第一種為雙書名號[《](LEFT DOUBLE ANGLE BRACKET)與[](RIGHT DOUBLE ANGLE BRACKET),用於標注書名。第二種為單書名號[〈](LEFT ANGEL BRACKET)與[](RIGHT ANGEL BRACKET),用於標注單篇文章名稱。第三種為[﹏],加於書名、篇名側邊,橫排時為下方,直排時為左側。第一種與第二種於直排時需順時針旋轉90度。雙書名號與單書名號之開始不得出現於行末,結束不得出現於行首。註1)第三種於側邊加上波浪線條的書名號,已經少出現於現代的書籍之中。但仍用於教科書中。註2)第三種書名號當兩書名、篇名連續相連時,符號間須有中斷
    12. 39 |
    13. 刪節號刪節號為連續兩個全型[…](MIDLINE HORIZONTAL ELLIPSIS),表示省略前/後段落或語氣未完。直排時需順時針旋轉90度,刪節號原則上不得出現於行首,兩個全型[…]不得因斷句而分離。
    14. 40 |
    15. 連結號連結號分為兩種,第一種為全型[—](EM DASH),第二種為[~](FULLWIDTH TILDE),用於連結時空之起訖或數量之多寡。直排時需順時針旋轉90度。連結號原則上不得出現於行首。
    16. 41 |
    17. 間隔號間隔號為全型[·](MIDDLE DOT),但為保持體例一致,也會使用[](KATAKANA MIDDLE DOT)、或[](FULLWIDTH FULL STOP)用於第一種書名號(雙書名號)分隔篇、章、卷,以及外國人名中文譯名之姓名分隔使用。間隔號原則上不得出現於行首。註1)間隔號原則為全形符號,由於各字體中字形不一致,故混用[](KATAKANA MIDDLE DOT)、或[](FULLWIDTH FULL STOP)的狀況相當常見
    18. 42 |
    19. 專名號專名號為專有名詞,如人名、地名,加於其側邊之直線,橫排時為下方,直排時為左側。註1)如第三種書名號,專名號已經少出現於現代書籍,但仍用於教科書。註2)專名號當專有名詞連續相接時,符號間須有中斷。
    20. 43 |
    44 |

    3.1.2 行首禁則

    45 |

    中文繁體字標點符號,並未有明文排版規則禁止其出現於一行之首。但自活字排版時代起,為保持閱讀順暢、體例一致,故限制以下標點符號出現於一行之首,包括:句號、逗號、頓號、冒號、分號、驚歎號、問號、結束引號等、結束夾注號、結束單雙書名號、刪節號、連結號、間隔號。

    46 |

    註1)但刪節號、連結號、連結號,並未嚴格禁止出現於行首,可依狀況放寬。註2)由於中文繁體字為方塊字,若不希望標點符號出現於行頭時,僅能由前行取一字至下一行,前行採平均排列的方式處理。但若遇連續標點符號,如[……」]等狀況,可能取一字會造成前行字距過大,這時則採寬鬆處理,以避免造成體例不良。註3)報紙、雜誌採多欄處理時,由於一行字數較少,也有完全不禁止標點符號出現於一行之首的做法。

    47 |


    48 |

    3.1.3 行尾禁則

    49 |

    開始引號等、開始夾注號、開始單雙書名號等,不得出現於一行之尾。同樣是為了避免體例不良。

    50 |


    51 |

    3.1.4 分離禁止

    52 |

    以下標點符號,不得分割為兩行,標點符號應為一體。

    53 |


    54 |

    註1)但遇到標點符號連續排列時,也能准許分割為兩行,如3.1.2 註2所述。若強制禁止分割的話,會造成前一行字距過大,造成更嚴重的體例不良。

    55 |


    56 |
      57 |
    1. 第二種夾注號與破折號。為連續排列的[—](EM Dash)。因為處理方式不同,也有著以[―] (HORIZONTAL BAR)取代,使兩個字元能夠連續排列的狀況。
    2. 58 |
    3. 刪節號。為連續排列的[](MIDLINE HORIZONTAL ELLIPSIS)。
    4. 59 |
    60 |


    61 |

    3.1.5 句號、逗號與頓號的另一種形式

    62 |

    中文繁體字標點符號原則上皆置於字面中央,但部分書籍,處理句號、逗號與頓號的方式,則依循日文與中文簡體字標準。這時的處理如下:

    63 |


    64 |

    註1)會以這種做法處理,一方面是部分作家認為這種標記方式符合中文古籍句讀的標注方式。註2)但由於所使用的符號,其UNICODE字元一致,乃依照字型預設處理,所以不建議使用。

    65 |


    66 |
      67 |
    1. 句號[。](IDEOGRAPHIC FULL STOP),於橫排時置於字面左下角,直排時置於字面右上角。
    2. 68 |
    3. 逗號與頓號皆為[,](IDEOGRAPHIC COMMA),於橫排時置於字面左下角,直排時置於字面右上角。
    4. 69 |
    70 |


    71 |

    3.1.6 行尾標點懸吊

    72 |

    行尾標點懸吊並非中文繁體字的標準排版規範,而是參考日文排版所學習的處理方式。能夠簡易處理中文標點符號,不使其出現於一行之首的做法。處理方式如下:

    73 |


    74 |
      75 |
    1. 直排時,若禁止出現於行首的標點符號出現於一行之首,則可置於前一行,使其突出版心設定的空間,置於一行之尾。
    2. 76 |
    3. 橫排時,由於中文繁體字標點符號置於中央,會顯得過於突兀,而使體裁不良,所以不以此種方式處理。但若使用如日文與中文簡體字標準時,則可以使用。
    4. 77 |
    5. 標點懸吊的對象為句號、逗號與頓號。以外不建議作為處理對象。
    6. 78 |
    7. 標點懸吊以一全型字元為準,不處理連續禁止出現於行首的標點符號。
    8. 79 |
    80 | 81 | 82 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 3 其他/3.2 中西文混排處理.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 26 | 27 | 28 |

    3.2 中西文混排處理

    29 |

    3.2.1 中文與西文之混排

    30 |
      31 |
    1. 中文繁體字與拉丁文字以及希臘文字等西文、西字混排(中西文混排)的狀況非常多,以下為其範例。
    2. 32 |

    3. 33 |
    34 |
      35 |
    1. 使用AB,西文字母作為記號使用。
    2. 36 |
    3. 直接使用如「editor」這樣西文的單字。
    4. 37 |
    5. 使用如GDPDTP等與組織名、專有名詞等縮寫。
    6. 38 |
    7. 呈現西文文獻等之作者名、書名等採原本表計的方式呈現。
    8. 39 |
    40 |


    41 |

    項目符號與標題前加上編號,以及單位符號、元素符號、數學符號等也使用西文,西文與西字與中文混排為非常常見的呈現方式。

    42 |


    43 |

    3.2.2 橫排時中西文混排使用的文字

    44 |

    橫排時,原則上使用比例字。同時阿拉伯數字則是使用半型的阿拉伯數字或者比例字。中文字與西文字間需加入空白,原則上為一比例字空白。但西文出現在行頭或行尾時,不加入空白。

    45 |


    46 |

    註1)原則上繁體中文排版時不使用全形的西文字,主要是使用後會使得體裁變差,不易閱讀。

    47 |

    註2)橫排時使用的阿拉伯數字一般主要採以半形為字符的阿拉伯數字。

    48 |


    49 |

    3.2.3 直排時中西文混排使用的文字

    50 |

    直排時,西文與阿拉伯數字配置有著以下三種方法。

    51 |
      52 |
    1. 採用全形字,不順時針旋轉90度,採與中文文字相同的方向一字一字排列。當文中的西文字母與阿拉伯數字為單獨一字、或者為專有名詞縮寫時(如GDP),使用這種方式配置。
    2. 53 |
    3. 採用比例字或者半形字,將文字順時針旋轉90度配置。當文中的歐字為一般單字、句子;阿拉伯數在四位數以上時,採用這方法配置。
    4. 54 |
    5. 以縱中橫排(保持正常方向,橫排)方式配置。主要應用於二與三位數的阿拉伯數字,與行幅差不多程度、或者稍微切出行幅配置,這時採用半形阿拉伯數字。
    6. 55 |
    56 |

    註1)一般中文直排時,使用的數字多為中文數字,但由於報紙在紀年使用上越來越多使用阿拉伯數字,使得縱中橫排成為常見的處理方式。

    57 |


    58 |

    3.2.4 使用比例西文字時,中西文混排處理

    59 |

    直排中將文字採順時針旋轉90度配置的西文、阿拉伯數字,以及橫排中混排的西文、阿拉伯數字,其配置方式如下:

    60 |
      61 |
    1. 西文文字除了可hyphenation之處外,不能分隔成兩行。
    2. 62 |
    3. 漢字與西文字間,原則上其字距為四分之一空白。
    4. 63 |
    5. 由於中文排版強調行頭與行尾對齊,當西文字出現於行內時,難以對齊,這時多使用均等排列的方式處理。但均等排列時,西文字與字間、阿拉伯數字之間,以及西文字與阿拉伯數字的字距不列入均等排列的對象,僅調整漢字與中文字和西文字間的空白。
    6. 64 |
    65 |

    但是以下各處不加入四分之一空白。

    66 |
      67 |
    1. 位於行頭的西文與阿拉伯數字前面不加空白,位於行尾的西文與阿拉伯數字後面不加空白。
    2. 68 |
    3. 於全形逗號、句號前後,以及開始引號、夾注號後、結束引號、夾注號前的西文字,其字距不加空白。
    4. 69 |
    70 |

    3.2.5 使用比例西文字時,求漢字縱橫對齊的中西文混排處理

    71 |

    由於繁體中文漢字排版的天性,無論直排還是橫排,除了行頭、行尾對齊之外,也求行內各漢字能夠縱橫對齊。但這時若遇到西文或阿拉伯數字採用比例字,就難以滿足這樣原則,處理方式如下:

    72 |
      73 |
    1. 漢字與西文字之字距不採四分之一空白,而是加入大於零,但小於二分之一的空白,使西文字或西文句所占之空間為漢字所占空間的整數倍,如此則能保持西文字或西文句前後漢字都能夠縱橫對齊。
    2. 74 |
    3. 當西文字或西文句位於行尾必須斷行時,不遵照西文從音節斷行的慣例,於行尾強制斷行,以確保行尾對齊。
    4. 75 |
    76 |

    註1)使用此種方法時,可配合3.1中的行尾標點懸吊方式處理標點避頭尾。若遇到兩個以上連續標點時,懸吊後標點可視為特例,令其出現於行頭。

    77 | 78 | 79 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 3 其他/3.3 注音符號與Ruby處理.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 26 | 27 | 28 |

    3.3 注音符號與Ruby處理

    29 |

    3.3.1 注音符號概要

    30 |

    注音符號為台灣地區特有的中文教學使用拼音符號,由21個子音(聲符)、16個母音與中間音(韻符),以及四個調號所組成。注音符號排版的配置方式如下:

    31 |


    32 |

    a. 注音符號至少由單一聲符或韻符,致多由三個聲符與韻符所組成。

    33 |

    b. 調號中,輕聲[˙]於直式注音標注於字音上方,於橫式注音標注於字音第一個符號之前,陽平[ˊ]與上聲[ˇ]、去聲[ˋ]置於最後一個符號右上角。

    34 |

    c. 注音符號所占用空間需小於所標注之漢字之字高(直式)或字寬(橫式)。

    35 |


    36 |

    註1)無論直排或者橫排,當需標注注音時,通常會整篇文章都標注注音,而不會僅標注一字或者特定幾字。

    37 |

    註2)當注音出現於內文時,往往是用以說明單一字的讀音,這時會將注音符號以全形方式作為內文字排列。直排時將輕聲以內文字置於符號前方,其他調號以Ruby文字方式標注於最後一個符號右側。橫排時則是將調號作為內文字,輕聲置於符號前方,其他調號置於符號後方。註3)由於標注注音時,難以做到避頭點處理,所以可允許逗點、句點等出現於一行之首。

    38 |


    39 |

    3.3.2 直排時的注音符號處理

    40 |

    繁體中文直排時,注音符號一律標注於漢字之右側。

    41 |

    3.3.3 橫排時的注音符號處理

    42 |

    繁體中文橫排時注音符號有著兩種處理方式:

    43 |


    44 |
      45 |
    1. 置於標注漢字之上方。
    2. 46 |
    3. 置於標注漢字之右側。
    4. 47 |
    48 |


    49 |

    當橫排置於標注漢字之右側時,有著以下的排版要點:

    50 |


    51 |
      52 |
    1. 漢字與注音視為一體,不可因換行而分離。
    2. 53 |
    3. 無論是否有標注調號,每字所占空間需一致,也就是須確保每個單元寬度一致。
    4. 54 |
    5. 注音符號所在位置需置中對齊,不可靠標注漢字之上緣或下緣對齊。
    6. 55 |
    56 |


    57 |

    3.3.4 Ruby處理

    58 |

    對繁體中文而言,Ruby不是傳統的排版方式。但隨著日文翻譯小說數量增加,此種處理方式也逐漸出現在繁體中文的出版品中。Ruby文字對中文書籍而言,可視為註解的一種,依照使用狀況來看,多用在語言上的對照,最常使用的狀況為中文與英文專有名詞的對照。

    59 |


    60 |

    繁體中文出版品中,最常見到的Ruby使用範例有以下幾種:

    61 |


    62 |
      63 |
    1. 標注的母文字為漢字或者漢字組成的單字,Ruby為西文單字,此時西文單字採用比例字,直排時順時針旋轉90度排列。所占空間儘量位於母文字內,或稍微超出母文字。
    2. 64 |
    3. 標注的母文字為漢字或者漢字所組成的單字,Ruby為西文專門用語縮寫,此時西文單字採用全形字,直排時不旋轉。所占空間儘量收於母文字內。
    4. 65 |
    5. 標注的母文字為西文單字或者西文句子,Ruby為中文字,此時中文字排列與直排相同。所占空間儘量收於母文字內,或稍微超出母文字。
    6. 66 |
    67 |


    68 |

    註1)當在進行c的處理時,母文字之西文句子排列依然按照排版規則進行。Ruby採用均等排列,或母文字進行換行處理,Ruby也隨均等排列,換至下一行。

    69 | 70 | 71 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 3 其他/3.4 段落整型,對齊以及段落末尾處理.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 26 | 27 | 28 |

    3.4 段落整型,對齊以及段落末尾處理

    29 |

    3.4.1 段首下字

    30 |

    為了讓文字之前能夠有著顯著區別,以形成段落(意義上的區隔),呈現上,一般新的段落會予以斷行,此時,段落開頭該行就會以空白下字處理,呈現方法有著以下幾種。當下字時,原則上使用該段落使用文字尺寸的全形空白為之。

    31 |


    32 |

    註1)繁體中文中段落下字多以兩字為主。但遇到多欄排版,每欄字數較少時,也會採取僅下一字的做法。

    33 |


    34 |
      35 |
    1. 所有的段落開頭行都予以下字處理。幾乎所有的書籍與雜誌都使用這種方法。
    2. 36 |
    3. 全部段落的開頭行不予下字,以頂天方式處理。部分橫排的書籍、雜誌會使用這種方式,但並不容易閱讀。註1)通常使用這種方式排版時,段落與段落間會加入一定程度的段落間距,讓彼此有所區隔。
    4. 37 |
    5. 段落的開頭行原則上予以下字,僅有著部分語氣未完的段落不予下字,以頂天方式處理。語氣未完的段落有時前面會接:對話、引言,或者為讓書產生區隔,由編輯所下的標題。
    6. 38 |
    7. 此外,逐條列表、對話、問答等,則反過來於段落第二行起行頭下字。
    8. 39 |
    40 |


    41 |

    3.4.2 下字與上字

    42 |

    下字為將版面(單欄排版時),以及欄的範圍(多欄排版時)由行頭側以指定的量,將行頭位置向下移動的處理。反過來,從行尾側以指定的量將行尾位置提上處理為上字。

    43 |

    下字有著應用於引用文章以不同行呈現時,以及換行呈現標題的案例。

    44 |

    上字有著標題換行等以及引用文章的案例。

    45 |


    46 |

    註1)一般而言,採用上字或下字處理的引用段落,其文字尺寸與本文相同,有時也會調整使用的字體,或/及於段落之間加入段落間距,使段落間的差異更為明顯。

    47 |


    48 |

    3.4.3 對齊處理

    49 |

    繁體中文排版中的「對齊」是指於1行文字列中,令文字的配置位置能夠與指定的文字配置位置符合。有著以下作法。

    50 |
      51 |
    1. 置中對齊:行內文字原則上緊貼配置,使文字列行頭與行尾的空白量均等,文字列的中央與行的中央對齊排列。
    2. 52 |
    3. 行頭對齊:行內文字原則上緊貼配置,文字列的開頭與行頭位置對齊,若未滿一行時,則於行尾端配置空白。
    4. 53 |
    5. 行尾對齊:行內文字原則上緊貼配置,文字列的末尾與行尾位置對齊,若未滿一行時,則於行頭端配置空白。
    6. 54 |
    7. 均等排列:行內文字原則上緊貼配置,與此之上,進行行的調整時於可以調整空白的部份其字距插入均等空白,文字列開頭對齊行頭位置、文字列的末尾對齊行尾位置。
    8. 55 |
    56 |

    3.4.4 孤行與孤字處理

    57 |

    繁體中文排版中有著稱為「孤字不成行、孤行不成頁」的口訣。這種處理近似於西文排版中的Orphan與Widow。實際原則如下:

    58 |
      59 |
    1. 若段落末尾僅有一個漢字,或一個漢字加上標點符號,即為孤字。這時需刪除該段落文字,使其縮進段落之前一行。或者增加無意義的連接詞或形容詞,讓該行文字能夠超過一個漢字以上。
    2. 60 |
    3. 若頁面中首行為前一頁最末段落的最末行,即為孤行,這時需刪除該段落文字,使該行能納入前一頁之段落。或者增加無意義的連接詞或形容詞,讓該行文字能夠超過一行以上。
    4. 61 |
    5. 若頁面中僅有一行,且為前一頁最末段落的最末行,亦為孤行。處理方式如b。
    6. 62 |
    63 |

    註1)這些排版規則,由於各出版社的標準不一,不見得都不能夠被接受。但依照嚴重程度,c最為嚴重,應該避免。a相當嚴重,幾乎都會進行處理,而b是多數被接受的狀況。

    64 |


    65 | 66 | 67 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 3 其他/3.5 行的調整處理.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 21 | 22 | 23 |

    3.5 行的調整處理

    24 |

    3.5.1 行的調整處理之必要性

    25 |

    繁體中文排版於活字排版時期,全使用漢字排列而成,故有著以下兩項特徵:

    26 |
      27 |
    1. 不分橫排與直排,每行字數固定,行頭與行尾對齊排列。
    2. 28 |
    3. 除行頭與行尾對齊排列外,每字縱橫對齊。
    4. 29 |
    30 |

    但由於現代繁體中文書籍中,有著諸多表現方式,所以無法以格狀(Grid)處理所有的書籍,必須於行中特定位置斷行,並且於文字間加入一定的空白量來進行平衡,至少滿足行頭與行尾對齊排列的基本原則。

    31 |

    註1)中文繁體字排版中,主要使用的排版方式為西文排版中的「Justification」作為原則。

    32 |

    註2)段落最末行

    33 |


    34 |

    主要需要進行行的調整處理有著各種原因,如以下案例:

    35 |
      36 |
    1. 行中有著西文字以及阿拉伯數字等字符非全形的文字、單字與句子。
    2. 37 |
    3. 有標點符號時,為達到避頭尾點、以及不使標點符號分隔時的處理。
    4. 38 |
    5. 混用不同文字尺寸文字,例如行內註解、註釋標記等。
    6. 39 |
    40 |

    3.5.2 斷行處理與均等排列

    41 |

    由於中文繁體字所使用的文字以漢字為主,在進行行的調整處理時,因為漢字每字為正方形,所使用的空間固定,所以儘可能地不使用壓縮字距、標點間距作為調整手段。一般而言,當遇到3.5.1的三種狀況時,原則上先使用斷行處理。處理原則如下:

    42 |
      43 |
    1. 當行中有著西文字或句子時,於超出行尾對齊線之單字,按照西文字的斷行(hyphenation)原則切至下一行。若無法找到斷行處時,將超出行尾對齊線的單字移至下一行,與行頭對齊。
    2. 44 |
    3. 當行中有著阿拉伯數字,或者以阿拉伯數字構成的日期、計算式等,原則上不予斷行。而是將超出行尾對齊線的該數字列移至下一行,與行頭對齊。
    4. 45 |
    5. 當行尾有著禁止出現於行尾的標點符號,如:開始引號、開始夾注號時,該標點符號與前一漢字一併移至下一行,前一漢字為次行行首第一字。
    6. 46 |
    7. 當行頭有著禁止出現於行頭的標點符號,如:逗號、句號、結束引號、結束夾注號時,取前一行最末一漢字致本行行頭。若前一行之最末字亦為禁止出現於行頭的標點符號時,則包含該標點符號在內,取前一行末兩字至本行。
    8. 47 |
    48 |

    註1)d的處理方式以兩字為限,若前一行末兩字皆為禁止出現於行頭的標點符號,這時當以例外處理,也就是不取字,另該標點違反規定出現於行頭。這是為了避免前一行採後述均等排列處理時,各漢字間的間距過大,嚴重影響排版體例。

    49 |


    50 |

    進行斷行處理後,各行會有著行長無法對齊行尾的狀況發生。這時應使用均等排列,使行長能夠對齊行首與行尾,以滿足中文繁體字的基本排版原則。這時處理上,應滿足以下原則:

    51 |
      52 |
    1. 西文字之字母間距、阿拉伯數字之間距、西文字與阿拉伯數字之間距,算式中數字與計算符號之間距,不應作為分配均等空白的對象。
    2. 53 |
    3. 使用均等排列時,分配至各字間的空白量,原則上總量不得超過兩個全形字。因為如此一來會使漢字間的文字間距過寬,造成體裁不良。若空白量大於三個全形字時,則會將分配到出現本問題之行之前面數行。
    4. 54 |
    5. 採用多欄排版,每行字數較少、或遇到較長的西文字時,往往會造成均等排列後,西文、數字與漢字間的間距過寬的狀況發生,這時往往會加入無意義的連接詞或形容詞,讓該行的文字得以平均。
    6. 55 |
    56 |

    3.5.3 不使用均等排列的斷行與調整處理

    57 |

    前述的處理方式,雖滿足了行首與行尾對齊的原則,但由於均等排列於文字間加入空白,而無法達到漢字縱橫對齊的原則。以下是不使用均等排列時,盡可能讓漢字縱橫對齊的建議處理方式。

    58 |

    註1)這種建議的方式,散見於中文繁體字於活字印刷時的處理,但未曾規範化,故這裡將各種意見整理後提出。

    59 |


    60 |


    61 |
      62 |
    1. 當行中有著西文字或句子、以及阿拉伯數字時,所佔空間需為漢字文字尺寸的整數倍,若不滿整數倍,則於西文字及句子及阿拉伯數字與漢字間之間隔加入空白,使其所佔空間為整數倍。但所加入之空白不得大於漢字文字尺寸之一半。(參照3.2.5)
    2. 63 |
    3. 若西文字或句子、以及阿拉伯數字在行尾,所佔空間超過行尾對齊線時,不按照西文斷行原則,強制斷行。斷行處,前行需對齊行尾,後行與漢字間須按照a的方式加入空白至漢字文字尺寸的整數倍。
    4. 64 |
    5. 若遇到行尾有著禁止出現於行尾的標點符號,如:開始引號、開始夾注號時,不予處理。
    6. 65 |
    7. 當行頭有著禁止出現於行頭的標點符號,如:逗號、句號、結束引號、結束夾注號時,採取3.1.6的行尾標點懸吊方式處理,但以一個標點為限,若遇到連續標點,則視為例外處理,允許出現於行頭。
    8. 66 |
    67 | 68 | 69 | -------------------------------------------------------------------------------- /others/TCLREQ/TCLREQ_Bobby/Ch 3 其他/3.6 標題處理(包含換頁處理).html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 26 | 27 | 28 |

    3.6 標題處理(包含換頁處理)

    29 |

    3.6.1 標題的種類

    30 |

    標題依照排版處理方式,可分為以下三種。

    31 |
      32 |
    1. 扉頁標題
    2. 33 |
    3. 換行標題
    4. 34 |
    5. 同行標題
    6. 35 |
    36 |

    註1)雜誌因為排版需求,標題會使用相當多種多樣的方式處理,但書籍排版較為單純,故不將雜誌使用的標題配置方式列於本文件之中。

    37 |


    38 |


    39 |

    扉頁為書籍中需要大幅區分時使用,為了標題而使用一整頁,背面為空白。有時還會有副標、摘句、作者名以及圖片、部分段落等元素配置其上。有時也有背面不為空白(即日文書中之半扉)的使用方式。通常在書籍內文開始處,會以扉頁標注書名。

    40 |

    換行標題是以獨立一行呈現標題的作法。於標題後換行,直接接續本文。大標與中標等使用這種形式配置。

    41 | 42 | 43 | 44 | 47 | 52 | 53 | 54 |
    45 |


    46 |
    48 |

    註1)標題是為了區分內容而添加,依照階層構造,由上而下分別為扉頁、大標、中標、小標。

    49 |

    註2)標題構造結構為何,依照書籍內容而定。有人認為標題層級不應該過多。

    50 |

    註3)多欄排列時,有著將換行標題置於複數欄的配置方法。稱為「跨欄標題」。

    51 |
    55 |

    同行標題為標題後接的文章不予換行,而以接續在標題後面繼續排列的形式呈現。同行標題主要利用於小標。此外,小標也會使用換行標題。

    56 |

    3.6.2 使標題得以突顯的方式

    57 |

    標題主要是為了呈現階層結構,所以需要以特別的表現體裁來顯示其階層。標題的表現體裁包含以下幾種方式:

    58 |
      59 |
    1. 使用不同的文字尺寸使用不同的文字尺寸呈現標題的階層,例如,有著大標、中標、小標時,小標比本文文字尺寸(例如:9pt)大一階段(例如:10pt),中標則比小標大一階段(例如:12pt),大標則比中標大一階段(例如:14pt)。註1)也有採用將本文文字尺寸依照比例放大的方式,使用這方式時,以10%~20%上下,依階層放大為佳。
    2. 60 |
    3. 使用的字體使用黑體,或者採用宋體但加粗。此外,也有使用圓體、楷體的案例。註1)活版印刷使用作為標題的宋體字,其活字設計時都會因為供標題使用而字重偏重。但使用數位字體時由於是採內文字設計,放大字級後顯得過輕,幾乎都會加重字重為粗體。註2)使用黑體作為小標時,也都會加重字重,令標題凸顯。
    4. 61 |
    5. 對齊橫排的大標與中標使用置中對齊的案例相當多,但直排時,則多使用對齊行頭或下字。註1)下字時,下字的量一般使用版心設定文字尺寸的2字(2倍)。大標、中標、小標下字量,由各出版社決定,無一定規則。
    6. 62 |
    7. 其他加上框線、圖片、記號等。
    8. 63 |
    64 |

    3.6.3 單頁起、換頁處理

    65 |

    標題為了作出明確區分,而會使用於新頁面開始的方法,此時以以下原則處理。

    66 |
      67 |
    1. 一定要出現於奇數頁稱為單頁起,主要應用於扉頁、大標等。註1)書籍由封面作為第一頁開始,所以直排右翻書,由左頁開始(稱為左頁起),橫排左翻書,由右頁開始(稱為右頁起)。
    2. 68 |
    3. 不分奇數頁還偶數頁,從新頁面開始稱為換頁。主要用於大標。
    4. 69 |
    5. 當中標、小標出現於某一頁的最末尾,其後沒有空間以至於無法接續內文段落時,由於這樣的呈現會使得體裁不良,也會讓中標、小標換頁,於下一頁開頭呈現。
    6. 70 |
    71 |

    3.6.4 單頁起、換頁處理時,前一頁的處理

    72 |

    單頁起、換頁處理時,前一頁的排版處理會是問題(最終頁的處理亦同),以以下原則處理。

    73 |
      74 |
    1. 不分欄排版遇到單頁起與換頁時,前一頁末尾後面留空即可。
    2. 75 |
    3. 換欄時,前一欄末尾後面留空即可。
    4. 76 |
    5. 直排多欄排版時,由上欄往下欄,各行依序排列,行數可不齊。
    6. 77 |
    7. 橫排多欄排版時,各欄行數原則上需對齊。若無法對齊時,不足的行數於最右欄末留空。
    8. 78 |
    79 |

    3.6.5 同行標題的處理方式

    80 |

    同行標題主要用於小標,以下介紹幾個同行標題的配置範例。同行標題與之後接續內文的空白量,一般為版心設定文字尺寸的全形空白。此外,同行標題可以配置於頁末。

    81 |
      82 |
    1. 與內文採相同文字尺寸,字體改為黑體或者楷體。
    2. 83 |
    3. 比內文文字尺寸較小,字體改為黑體或者楷體。註1)此時同行標題所占空間並非內文文字尺寸的整數倍,所以可調整與內文間的空白量,以避免內文文字無法縱橫對齊,或者無法齊行首、行尾。
    4. 84 |
    5. 與內文採用相同文字尺寸與字體,但於前面添加漢字數字或阿拉伯數字。
    6. 85 |
    86 | 87 | 88 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "clreq", 3 | "version": "0.1.0", 4 | "scripts": { 5 | "preinstall": "npx only-allow pnpm", 6 | "dev": "esbuild src/script.ts --bundle --watch --outfile=built/script.js", 7 | "build": "esbuild src/script.ts --bundle --outfile=built/script.js" 8 | }, 9 | "dependencies": { 10 | "esbuild": "^0.25.5" 11 | }, 12 | "packageManager": "pnpm@8.10.2+sha1.e0b68270e89c817ff88b7be62466a2128c53af02" 13 | } 14 | -------------------------------------------------------------------------------- /print.css: -------------------------------------------------------------------------------- 1 | @media print { 2 | #langSwitch { 3 | display: none; 4 | } 5 | .input { 6 | display: none; 7 | } 8 | details > summary { 9 | font-size: 110%; 10 | list-style: none; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /resources/echidna: -------------------------------------------------------------------------------- 1 | # ECHIDNA configuration 2 | index.html?specStatus=DNOTE&shortName=hani-lreq respec 3 | -------------------------------------------------------------------------------- /resources/local.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/script.ts: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | void function() { 4 | 5 | const LANG_LIST = ['en', 'zh-hant', 'zh-hans'] 6 | 7 | const L10N = { 8 | 'en': { 9 | // CSS selectors for elements that need text replacement 10 | selector: { 11 | 'head > title': 'Requirements for Chinese Text Layout', 12 | '#abstract > h2': 'Abstract', 13 | '#toc > ol > li:nth-child(1) > a': 'Abstract', 14 | '#sotd > h2': 'Status of This Document', 15 | '#toc > ol > li:nth-child(2) > a': 'Status of This Document', 16 | '#table-of-contents': 'Table of Contents', 17 | '.note-title': 'Note', 18 | }, 19 | 20 | // Prefix for figure captions (e.g., "Fig. 1", "Fig. 2") 21 | 'fig': 'Fig. ', 22 | 23 | dt: {}, 24 | 25 | dd: { 26 | 'Bug tracker:': 'file a bug (open bugs)', 27 | }, 28 | }, 29 | 30 | 'zh-hant': { 31 | selector: { 32 | 'head > title': '中文排版需求', 33 | '#abstract > h2': '摘要', 34 | '#toc > ol > li:nth-child(1) > a': '摘要', 35 | '#sotd > h2': '關於本文檔', 36 | '#toc > ol > li:nth-child(2) > a': '關於本文檔', 37 | '#table-of-contents': '內容大綱', 38 | '.note-title': '注', 39 | }, 40 | 41 | 'fig': '圖', 42 | 43 | 'summary': '關於此文檔', 44 | 45 | dt: { 46 | 'This version:': '本版本:', 47 | 'History:': '歷史:', 48 | 'Previous version:': '上一版:', 49 | 'Latest published version:': '最新發佈草稿:', 50 | 'Latest editor\'s draft:': '最新編輯草稿:', 51 | 'Editors:': '編輯:', 52 | 'Former editors:': '原編輯:', 53 | 'Participate:': '協助參與:', 54 | 'Feedback:': '反饋:', 55 | 'Contributors:': '貢獻者:', 56 | }, 57 | 58 | dd: { 59 | 'Bug tracker:': '反饋錯誤修正中的錯誤)', 60 | } 61 | }, 62 | 63 | 'zh-hans': { 64 | selector: { 65 | 'head > title': '中文排版需求', 66 | '#abstract > h2': '摘要', 67 | '#toc > ol > li:nth-child(1) > a': '摘要', 68 | '#sotd > h2': '关于本文档', 69 | '#toc > ol > li:nth-child(2) > a': '关于本文档', 70 | '#table-of-contents': '内容大纲', 71 | '.note-title': '注', 72 | }, 73 | 74 | 'fig': '图', 75 | 76 | 'summary': '关于此文档', 77 | 78 | dt: { 79 | 'This version:': '本版本:', 80 | 'History:': '历史:', 81 | 'Previous version:': '上一版:', 82 | 'Latest published version:': '最新发布草稿:', 83 | 'Latest editor\'s draft:': '最新编辑草稿:', 84 | 'Editors:': '编辑:', 85 | 'Former editors:': '原编辑:', 86 | 'Participate:': '协助参与:', 87 | 'Feedback:': '反馈:', 88 | 'Contributors:': '贡献者:', 89 | }, 90 | 91 | dd: { 92 | 'Bug tracker:': '反馈错误修正中的错误)', 93 | } 94 | }, 95 | } 96 | 97 | const $root = document.documentElement 98 | let $$hidden: object[] = [] 99 | 100 | function arrayify(obj: any) { 101 | return Array.from ? Array.from(obj) : Array.prototype.slice.call(obj) 102 | } 103 | 104 | /** 105 | * Convenience function for querySelectorAll that returns a proper Array. 106 | * @param selector - CSS selector string 107 | * @returns Array of matching DOM elements 108 | */ 109 | function $$(selector: string) { 110 | return arrayify(document.querySelectorAll(selector)) 111 | } 112 | 113 | function toggle$rootClass(lang: string) { 114 | $root.lang = lang === 'all' ? 'en' : lang 115 | 116 | if (lang === 'all') { 117 | $root.classList.add('is-multilingual') 118 | $root.classList.remove('isnt-multilingual') 119 | } else { 120 | $root.classList.remove('is-multilingual') 121 | $root.classList.add('isnt-multilingual') 122 | } 123 | } 124 | 125 | function showAndHideLang(lang: string) { 126 | // Show previously hidden parts: 127 | $$hidden 128 | .forEach(function($elmt) { Object.assign($elmt, { hidden: false }) }) 129 | 130 | if (lang === 'all') { 131 | return 132 | } 133 | 134 | // Hide parts of other languages: 135 | $$hidden = ( 136 | LANG_LIST 137 | .filter(function(it) { return it !== lang }) 138 | .reduce(function(result, it) { return result.concat($$('[its-locale-filter-list="' + it + '"]')) }, []) 139 | .map(function($elmt) { return Object.assign($elmt, { hidden: true }) }) 140 | ) 141 | } 142 | 143 | function replaceBoilerplateText(lang: string) { 144 | const l10n = L10N[lang === 'all' ? 'en' : lang] 145 | 146 | // Alter some basic headings, etc: 147 | Object.keys(l10n.selector) 148 | .forEach(function(s) { 149 | $$(s) 150 | .forEach(function($elmt) { 151 | Object.assign($elmt, { textContent: l10n.selector[s] }) 152 | }) 153 | }) 154 | 155 | // Update figure captions and figure references with localized prefix 156 | $$('figcaption, .fig-ref') 157 | .forEach(function($elmt) { 158 | Object.assign($elmt.firstChild, { textContent: l10n['fig'] }) 159 | }) 160 | 161 | // Update summary text in document details section 162 | $$('body > div.head > details > summary') 163 | .forEach(function($summary) { 164 | let originalText = $summary.dataset.originalText || $summary.textContent.trim() 165 | let text = l10n['summary'] || originalText 166 | 167 | if (text) { 168 | $summary.textContent = text 169 | $summary.dataset.originalText = originalText 170 | } 171 | }) 172 | 173 | // Update definition terms (dt elements) in document metadata 174 | $$('body > div.head > details > dl > dt') 175 | .forEach(function($dt) { 176 | let originalText = $dt.dataset.originalText || $dt.textContent.trim() 177 | let text = l10n.dt[originalText] || originalText 178 | 179 | if (text) { 180 | $dt.textContent = text 181 | $dt.dataset.originalText = originalText 182 | } 183 | 184 | // Special handling for bug tracker links (dd elements contain HTML) 185 | if (originalText === 'Bug tracker:') { 186 | $dt.nextElementSibling.innerHTML = l10n.dd['Bug tracker:'] 187 | } 188 | }) 189 | } 190 | 191 | /** 192 | * Expose to global for now since respec will re-parse the entire document 193 | * and event bound will be lost. 194 | */ 195 | window.switchLang = function(lang: string) { 196 | toggle$rootClass(lang) 197 | showAndHideLang(lang) 198 | replaceBoilerplateText(lang) 199 | } 200 | 201 | /** 202 | * Add `lang` attribute wherever there is a its-locale-filter-list attribute. 203 | * This is done by js to reduce burden on editors 204 | * If there's already a lang attribute in the tag, that tag is skipped. 205 | * 206 | * Note that this may still produce temporarily incorrect labelling 207 | * where text is awaiting translation. 208 | */ 209 | function addLangAttr() { 210 | toggle$rootClass('all') 211 | 212 | LANG_LIST 213 | .forEach(function(lang) { 214 | $$('[its-locale-filter-list="' + lang + '"]') 215 | .forEach(function($elmt) { 216 | if (!$elmt.lang) { 217 | $elmt.lang = lang 218 | } 219 | }) 220 | }) 221 | } 222 | 223 | addLangAttr() 224 | }() 225 | 226 | export {}; 227 | -------------------------------------------------------------------------------- /src/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | 3 | declare global { 4 | interface Window { 5 | switchLang: Function; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "./built", 4 | "allowJs": true, 5 | "target": "ES6", 6 | "isolatedModules": true, 7 | "esModuleInterop": true, 8 | "noImplicitThis": true 9 | }, 10 | "include": ["./src/**/*"], 11 | "watchOptions": { 12 | // Use native file system events for files and directories 13 | "watchFile": "useFsEvents", 14 | "watchDirectory": "useFsEvents", 15 | // Poll files for updates more frequently 16 | // when they're updated a lot. 17 | "fallbackPolling": "dynamicPriority", 18 | // Don't coalesce watch notification 19 | "synchronousWatchDirectory": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /w3c.json: -------------------------------------------------------------------------------- 1 | { 2 | "group": 32113 3 | , "contacts": [ "r12a", "xfq" ] 4 | , "policy": "open" 5 | , "repo-type": "note" 6 | } 7 | -------------------------------------------------------------------------------- /zh/locale.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | body { 4 | padding: 2em 1em 2em 70px; 5 | margin: 0; 6 | font-family: sans-serif; 7 | color: black; 8 | background: white url(//www.w3.org/StyleSheets/TR/logo-ED) top left fixed no-repeat; 9 | } 10 | 11 | body:lang(zh) { 12 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 13 | line-height: 1.5; 14 | } 15 | 16 | article, 17 | aside, 18 | details, 19 | figcaption, 20 | figure, 21 | footer, 22 | header, 23 | main, 24 | menu, 25 | nav, 26 | section, 27 | summary { 28 | display: block; 29 | } 30 | 31 | [hidden] { display: none; } 32 | 33 | :link { color: #00C; background: transparent; } 34 | :visited { color: #609; background: transparent; } 35 | a[href]:hover { background: #ffa; } 36 | a:active { color: #C00; background: transparent; } 37 | 38 | a:link img, 39 | a:visited img { border-style: none; } 40 | 41 | h1, h2, h3, h4, h5, h6 { text-align: left; } 42 | /* background should be transparent, but WebTV has a bug */ 43 | h1, h2, h3, h4 { color: #005A9C; background: white; } 44 | h1 { font: 170% sans-serif; } 45 | h2 { font: 140% sans-serif; } 46 | h3 { font: 120% sans-serif; } 47 | h4 { font: 110% sans-serif; } 48 | h5 { font: bold 100% sans-serif; } 49 | h6 { font: bold 100% sans-serif; } 50 | 51 | .leadin { font-weight: bold; color: brown; } 52 | 53 | pre { margin-left: 2em; } 54 | dt { font-weight: bold; } 55 | 56 | em:lang(zh), 57 | cite:lang(zh), 58 | dfn:lang(zh), 59 | var:lang(zh) { 60 | font-weight: bold; 61 | font-style: inherit; 62 | } 63 | 64 | header { margin-bottom: 1em; } 65 | header h1 { margin-top: 2em; clear: both; } 66 | header table { margin-left: 2em; margin-top: 2em; } 67 | 68 | p.copyright { font-size: small; } 69 | p.copyright small { font-size: small; } 70 | 71 | ol.toc { 72 | list-style: none !important; 73 | } 74 | 75 | #toc ol { 76 | padding-left: 0; 77 | } 78 | 79 | #toc ol ol { 80 | padding-left: 1em; 81 | } 82 | 83 | #toc + section { 84 | margin-top: 4em; 85 | } 86 | 87 | section ol:not([type]) { 88 | list-style: lower-latin; 89 | } 90 | 91 | section ol ol:not([type]) { 92 | list-style: decimal; 93 | } 94 | 95 | section ol ol ol:not([type]) { 96 | list-style: lower-roman; 97 | } 98 | 99 | li h5, 100 | li h6, 101 | li p { 102 | margin: .5em 0; 103 | } 104 | 105 | li h5 + p, 106 | li h6 + p { 107 | margin-top: -.5em; 108 | } 109 | 110 | section, 111 | li { 112 | counter-reset: note; 113 | } 114 | 115 | /* 116 | div.note::before { 117 | counter-increment: note; 118 | content: "注" counter(note) ")"; 119 | position: absolute; 120 | left: 1em; 121 | top: 0; 122 | } 123 | */ 124 | 125 | div.note span::after { 126 | counter-increment: note; 127 | content: counter(note) ")"; 128 | } 129 | 130 | div.note { 131 | padding-left: 4em; 132 | position: relative; 133 | font-size: .85em; 134 | } 135 | 136 | .note > p:first-child, 137 | .issue > p:first-child, 138 | .warning > p:first-child { margin-top: 0; } 139 | 140 | #appendices table { 141 | border-collapse: collapse; 142 | } 143 | 144 | #appendices table th, 145 | #appendices table td { 146 | border: thin solid grey; 147 | padding: .2em; 148 | } 149 | 150 | #appendices table tbody th { 151 | font-weight: inherit; 152 | } 153 | 154 | table.punctuation th:nth-child(1) { width: 5em; } 155 | table.punctuation th:nth-child(2) { width: 2em; } 156 | table.punctuation th:nth-child(3) { width: 3.5em; } 157 | table.punctuation th:nth-child(5), 158 | table.punctuation th:nth-child(6), 159 | table.punctuation th:nth-child(7), 160 | table.punctuation th:nth-child(8) { width: 4em; } 161 | 162 | table.punctuation td:nth-of-type(1), 163 | table.punctuation td:nth-of-type(2), 164 | table.punctuation td:nth-of-type(4), 165 | table.punctuation td:nth-of-type(5), 166 | table.punctuation td:nth-of-type(6), 167 | table.punctuation td:nth-of-type(7) { text-align: center; } 168 | 169 | table.glossary th:nth-child(1) { width: 8em; } 170 | table.glossary th:nth-child(2) { width: 5em; } 171 | table.glossary th:nth-child(3) { width: 8em; } 172 | table.glossary tbody th { text-align: left; } 173 | 174 | h1 abbr, 175 | h2 abbr, 176 | h3 abbr, 177 | h4 abbr, 178 | h5 abbr, 179 | h6 abbr, 180 | a abbr { 181 | border: none; 182 | } 183 | 184 | a.internalDFN { 185 | color: inherit; 186 | border-bottom: 1px solid #99c; 187 | text-decoration: none; 188 | } 189 | 190 | a.externalDFN { 191 | color: inherit; 192 | border-bottom: 1px dotted #ccc; 193 | text-decoration: none; 194 | } 195 | 196 | a.bibref { 197 | text-decoration: none; 198 | } 199 | 200 | cite .bibref { 201 | font-style: normal; 202 | } 203 | 204 | code { 205 | color: #C83500; 206 | } 207 | 208 | /* --- TOC --- */ 209 | .toc a, .tof a { 210 | text-decoration: none; 211 | } 212 | 213 | a .secno, a .figno { 214 | color: #000; 215 | } 216 | 217 | ul.tof, ol.tof { 218 | list-style: none outside none; 219 | } 220 | 221 | .caption { 222 | margin-top: 0.5em; 223 | font-style: italic; 224 | } 225 | 226 | /* --- TABLE --- */ 227 | table.simple { 228 | border-spacing: 0; 229 | border-collapse: collapse; 230 | border-bottom: 3px solid #005a9c; 231 | } 232 | 233 | .simple th { 234 | background: #005a9c; 235 | color: #fff; 236 | padding: 3px 5px; 237 | text-align: left; 238 | } 239 | 240 | .simple th[scope="row"] { 241 | background: inherit; 242 | color: inherit; 243 | border-top: 1px solid #ddd; 244 | } 245 | 246 | .simple td { 247 | padding: 3px 10px; 248 | border-top: 1px solid #ddd; 249 | } 250 | 251 | .simple tr:nth-child(even) { 252 | background: #f0f6ff; 253 | } 254 | 255 | /* --- DL --- */ 256 | section dd > p:first-child { 257 | margin-top: 0; 258 | } 259 | 260 | section dd > p:last-child { 261 | margin-bottom: 0; 262 | } 263 | 264 | section dd { 265 | margin-bottom: 1em; 266 | } 267 | 268 | section dl.attrs dd, 269 | section dl.eldef dd { 270 | margin-bottom: 0; 271 | } 272 | 273 | @media speech { 274 | h1, h2, h3 { voice-stress: moderate; } 275 | .hide { speak: none; } 276 | p.copyright { voice-volume: x-soft; voice-rate: x-fast; } 277 | dt { pause-before: 63ms; } 278 | } 279 | 280 | @media print { 281 | .removeOnSave { 282 | display: none; 283 | } 284 | } 285 | --------------------------------------------------------------------------------