Skip to content

East_Asian_Width 3.1.1 ætiology#1482

Merged
eggrobin merged 1 commit into
unicode-org:mainfrom
eggrobin:ea-3.1.1
Jul 15, 2026
Merged

East_Asian_Width 3.1.1 ætiology#1482
eggrobin merged 1 commit into
unicode-org:mainfrom
eggrobin:ea-3.1.1

Conversation

@eggrobin

@eggrobin eggrobin commented Jul 15, 2026

Copy link
Copy Markdown
Member

This came up while writing the PAG review of https://github.com/unicode-org/sew/issues/653, see #1474.

@robertbastian robertbastian left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure what you want me to review. I don't have access to the linked issue

# [87-M20] Motion: Update the East Asian data files changing the list in L2/01-189, 00AE to 273D to A, and all Jamo to W, post, and include in Unicode 3.1.1.
# L2/01-189 Updates to EastAsianWidth.
# First group (to ea=A). U+00AF not changed.
East_Asian_Width ; 3.1.1 ; [\u00AE\u014B\u02C4\u02DF\u2022\u2024\u203E\u2116\u2153\u215C\u215D\u21B8\u21B9\u21E7\u273D] ; L2/01-189, 87-M20

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find [®ŋ˄˟•․‾№⅓⅜⅝↸↹⇧✽] more readable than whatever these escapes are. with [®ŋ˄˟•․‾№⅓⅜⅝↸↹⇧✽] I can see that it's the same set across the files

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is mostly a write-only input file, and these code points are from L2/01-189 (I copied them from there). The output file (reasons_auto) tries to be readable and uses [®ŋ˄˟•․‾№⅓⅜⅝↸↹⇧✽].

@eggrobin

Copy link
Copy Markdown
Member Author

not sure what you want me to review

(Getting off a train right now, will give you more context when I’m back at a keyboard)

@eggrobin

eggrobin commented Jul 15, 2026

Copy link
Copy Markdown
Member Author

@robertbastian: What is happening here is that I found out why 15 characters have the East_Asian_Width assignment they have, (based on proposal L2/01-189 and a decision UTC-87-M20 from 2001), and I am recording that in a machine-readable form so that next time we come across one of those we don’t have to wonder why their East_Asian_Width assignment is what it is and why it changed in 3.1.1.

Here’s the broader context around this tool—Peter’s digest of the minutes do not include anything before UTC 90, which is part of why this has to come from reasons_manual, and why the generated comment in reasons_auto ends up being null—:

/**
* A tool that determines the reason for property assignments based on UTC minutes and on all
* versions of data files.
*
* <h4>Nomenclature</h4>
*
* <p>This tool is so named because it engages in ætiology:
*
* <blockquote>
*
* The assignment of a cause, the rendering of a reason; […].<br>
* — OED, second edition (1989).
*
* </blockquote>
*
* <p>NOTE(egg): Ætiolog<i>er</i> is, as far as I know, a neologism; the OED has ætiological and
* ætiologically. One could have gone with -logian or -logist (indeed the OED has all three for
* archæo- and theo-), but -er felt more appropriate for a tool.
*
* <h4>Outline</h4>
*
* <p>The tool takes as input:
*
* <ol>
* <li>the data files under unicodetools/data/;
* <li>actions.txt, a plain-text version of all decisions, action items, and notes from UTC
* minutes, provided by Peter Constable;
* <li>reasons_manual.txt, a data file with manually-determined reasons for some property
* assignments, which supplement and override the tool’s ætiology.
* </ol>
*
* <p>Whenever a UTC action appears to mention a property, code points, and a version of Unicode,
* the ætiologer checks whether the relevant property changed for those code points in that version
* of Unicode; if it did, it assigns that UTC action as the reason. When no target version can be
* found, it is deduced from the UTC meeting number.
*
* <p>The reasons are output to reasons_auto.txt, and can be accessed using {@code
* Ætiologer#getReasons()}. A flag --compute-unexplained creates a file reasons_unknown.txt listing
* all changes to property assignments after character assignments for which a reason could not be
* determined. This can serve as a way to analyze deficiencies of the ætiologer, or as a template to
* add entries to reasons_manual.txt.
*/
public class Ætiologer {

@eggrobin
eggrobin merged commit 8347de6 into unicode-org:main Jul 15, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants