1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629
|
<pre>Internet Engineering Task Force (IETF) P. Hoffman
Request for Comments: 6365 VPN Consortium
BCP: 166 J. Klensin
Obsoletes: <a href="./rfc3536">3536</a> September 2011
Category: Best Current Practice
ISSN: 2070-1721
<span class="h1">Terminology Used in Internationalization in the IETF</span>
Abstract
This document provides a list of terms used in the IETF when
discussing internationalization. The purpose is to help frame
discussions of internationalization in the various areas of the IETF
and to help introduce the main concepts to IETF participants.
Status of This Memo
This memo documents an Internet Best Current Practice.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
BCPs is available in <a href="./rfc5741#section-2">Section 2 of RFC 5741</a>.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
<a href="http://www.rfc-editor.org/info/rfc6365">http://www.rfc-editor.org/info/rfc6365</a>.
Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and the IETF Trust's Legal
Provisions Relating to IETF Documents
(<a href="http://trustee.ietf.org/license-info">http://trustee.ietf.org/license-info</a>) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
Table of Contents
<a href="#section-1">1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-1.1">1.1</a>. Purpose of this Document . . . . . . . . . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-1.2">1.2</a>. Format of the Definitions in This Document . . . . . . . . <a href="#page-4">4</a>
<a href="#section-1.3">1.3</a>. Normative Terminology . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-2">2</a>. Fundamental Terms . . . . . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a>
<a href="#section-3">3</a>. Standards Bodies and Standards . . . . . . . . . . . . . . . . <a href="#page-10">10</a>
<a href="#section-3.1">3.1</a>. Standards Bodies . . . . . . . . . . . . . . . . . . . . . <a href="#page-11">11</a>
<a href="#section-3.2">3.2</a>. Encodings and Transformation Formats of ISO/IEC 10646 . . <a href="#page-13">13</a>
<a href="#section-3.3">3.3</a>. Native CCSs and Charsets . . . . . . . . . . . . . . . . . <a href="#page-15">15</a>
<a href="#section-4">4</a>. Character Issues . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-16">16</a>
<a href="#section-4.1">4.1</a>. Types of Characters . . . . . . . . . . . . . . . . . . . <a href="#page-20">20</a>
<a href="#section-4.2">4.2</a>. Differentiation of Subsets . . . . . . . . . . . . . . . . <a href="#page-23">23</a>
<a href="#section-5">5</a>. User Interface for Text . . . . . . . . . . . . . . . . . . . <a href="#page-24">24</a>
<a href="#section-6">6</a>. Text in Current IETF Protocols . . . . . . . . . . . . . . . . <a href="#page-27">27</a>
<a href="#section-7">7</a>. Terms Associated with Internationalized Domain Names . . . . . <a href="#page-31">31</a>
<a href="#section-7.1">7.1</a>. IDNA Terminology . . . . . . . . . . . . . . . . . . . . . <a href="#page-31">31</a>
<a href="#section-7.2">7.2</a>. Character Relationships and Variants . . . . . . . . . . . <a href="#page-32">32</a>
<a href="#section-8">8</a>. Other Common Terms in Internationalization . . . . . . . . . . <a href="#page-33">33</a>
<a href="#section-9">9</a>. Security Considerations . . . . . . . . . . . . . . . . . . . <a href="#page-36">36</a>
<a href="#section-10">10</a>. References . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-37">37</a>
<a href="#section-10.1">10.1</a>. Normative References . . . . . . . . . . . . . . . . . . . <a href="#page-37">37</a>
<a href="#section-10.2">10.2</a>. Informative References . . . . . . . . . . . . . . . . . . <a href="#page-37">37</a>
<a href="#appendix-A">Appendix A</a>. Additional Interesting Reading . . . . . . . . . . . <a href="#page-41">41</a>
<a href="#appendix-B">Appendix B</a>. Acknowledgements . . . . . . . . . . . . . . . . . . <a href="#page-42">42</a>
<a href="#appendix-C">Appendix C</a>. Significant Changes from <a href="./rfc3536">RFC 3536</a> . . . . . . . . . . <a href="#page-42">42</a>
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-43">43</a>
<span class="grey">Hoffman & Klensin Best Current Practice [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
As the IETF Character Set Policy specification [<a href="./rfc2277" title=""IETF Policy on Character Sets and Languages"">RFC2277</a>] summarizes:
"Internationalization is for humans. This means that protocols are
not subject to internationalization; text strings are." Many
protocols throughout the IETF use text strings that are entered by,
or are visible to, humans. Subject only to the limitations of their
own knowledge and facilities, it should be possible for anyone to
enter or read these text strings, which means that Internet users
must be able to enter text using typical input methods and have it be
displayed in any human language. Further, text containing any
character should be able to be passed between Internet applications
easily. This is the challenge of internationalization.
<span class="h3"><a class="selflink" id="section-1.1" href="#section-1.1">1.1</a>. Purpose of this Document</span>
This document provides a glossary of terms used in the IETF when
discussing internationalization. The purpose is to help frame
discussions of internationalization in the various areas of the IETF
and to help introduce the main concepts to IETF participants.
Internationalization is discussed in many working groups of the IETF.
However, few working groups have internationalization experts. When
designing or updating protocols, the question often comes up "Should
we internationalize this?" (or, more likely, "Do we have to
internationalize this?").
This document gives an overview of internationalization terminology
as it applies to IETF standards work by lightly covering the many
aspects of internationalization and the vocabulary associated with
those topics. Some of the overview is somewhat tutorial in nature.
It is not meant to be a complete description of internationalization.
The definitions here SHOULD be used by IETF standards. IETF
standards that explicitly want to create different definitions for
the terms defined here can do so, but unless an alternate definition
is provided the definitions of the terms in this document apply.
IETF standards that have a requirement for different definitions are
encouraged, for clarity's sake, to find terms different than the ones
defined here. Some of the definitions in this document come from
earlier IETF documents and books.
As in many fields, there is disagreement in the internationalization
community on definitions for many words. The topic of language
brings up particularly passionate opinions for experts and non-
experts alike. This document attempts to define terms in a way that
will be most useful to the IETF audience.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
This document uses definitions from many documents that have been
developed inside and outside the IETF. The primary documents used
are:
o ISO/IEC 10646 [<a href="#ref-ISOIEC10646" title=""ISO/IEC 10646:2011. International Standard -- Information technology - Universal Multiple-Octet Coded Character Set (UCS)"">ISOIEC10646</a>]
o The Unicode Standard [<a href="#ref-UNICODE" title=""The Unicode Standard, Version 6.0"">UNICODE</a>]
o W3C Character Model [<a href="#ref-CHARMOD" title=""Character Model for the World Wide Web 1.0"">CHARMOD</a>]
o IETF RFCs, including the Character Set Policy specification
[<a href="./rfc2277" title=""IETF Policy on Character Sets and Languages"">RFC2277</a>] and the domain name internationalization standard
[<a href="./rfc5890" title=""Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework"">RFC5890</a>]
<span class="h3"><a class="selflink" id="section-1.2" href="#section-1.2">1.2</a>. Format of the Definitions in This Document</span>
In the body of this document, the source for the definition is shown
in angle brackets, such as "<ISOIEC10646>". Many definitions are
shown as "<<a href="./rfc6365">RFC6365</a>>", which means that the definitions were crafted
originally for this document. The angle bracket notation for the
source of definitions is different than the square bracket notation
used for references to documents, such as in the paragraph above;
these references are given in the reference sections of this
document.
For some terms, there are commentary and examples after the
definitions. In those cases, the part before the angle brackets is
the definition that comes from the original source, and the part
after the angle brackets is commentary that is not a definition (such
as an example or further exposition).
Examples in this document use the notation for code points and names
from the Unicode Standard [<a href="#ref-UNICODE" title=""The Unicode Standard, Version 6.0"">UNICODE</a>] and ISO/IEC 10646 [<a href="#ref-ISOIEC10646" title=""ISO/IEC 10646:2011. International Standard -- Information technology - Universal Multiple-Octet Coded Character Set (UCS)"">ISOIEC10646</a>].
For example, the letter "a" may be represented as either "U+0061" or
"LATIN SMALL LETTER A". See <a href="./rfc5137">RFC 5137</a> [<a href="./rfc5137" title=""ASCII Escaping of Unicode Characters"">RFC5137</a>] for a description of
this notation.
<span class="h3"><a class="selflink" id="section-1.3" href="#section-1.3">1.3</a>. Normative Terminology</span>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <a href="./rfc2119">RFC 2119</a> [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>].
<span class="grey">Hoffman & Klensin Best Current Practice [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Fundamental Terms</span>
This section covers basic topics that are needed for almost anyone
who is involved with making IETF protocols more friendly to non-ASCII
text (see <a href="#section-4.2">Section 4.2</a>) and with other aspects of
internationalization.
language
A language is a way that humans communicate. The use of language
occurs in many forms, the most common of which are speech,
writing, and signing. <<a href="./rfc6365">RFC6365</a>>
Some languages have a close relationship between the written and
spoken forms, while others have a looser relationship. The so-
called LTRU (Language Tag Registry Update) standards [<a href="./rfc5646" title=""Tags for Identifying Languages"">RFC5646</a>]
[<a href="./rfc4647" title=""Matching of Language Tags"">RFC4647</a>] discuss languages in more detail and provide identifiers
for languages for use in Internet protocols. Note that computer
languages are explicitly excluded from this definition.
script
A set of graphic characters used for the written form of one or
more languages. <ISOIEC10646>
Examples of scripts are Latin, Cyrillic, Greek, Arabic, and Han
(the characters, often called ideographs after a subset of them,
used in writing Chinese, Japanese, and Korean). <a href="./rfc2277">RFC 2277</a>
discusses scripts in detail.
It is common for internationalization novices to mix up the terms
"language" and "script". This can be a problem in protocols that
differentiate the two. Almost all protocols that are designed (or
were re-designed) to handle non-ASCII text deal with scripts (the
written systems) or characters, while fewer actually deal with
languages.
A single name can mean either a language or a script; for example,
"Arabic" is both the name of a language and the name of a script.
In fact, many scripts borrow their names from the names of
languages. Further, many scripts are used to write more than one
language; for example, the Russian and Bulgarian languages are
written in the Cyrillic script. Some languages can be expressed
using different scripts or were used with different scripts at
different times; the Mongolian language can be written in either
the Mongolian or Cyrillic scripts; Malay is primarily written in
Latin script today, but the earlier, Arabic-script-based, Jawa
form is still in use; and a number of languages were converted
<span class="grey">Hoffman & Klensin Best Current Practice [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
from other scripts to Cyrillic in the first half of the last
century, some of which have switched again more recently.
Further, some languages are normally expressed with more than one
script at the same time; for example, the Japanese language is
normally expressed in the Kanji (Han), Katakana, and Hiragana
scripts in a single string of text.
writing system
A set of rules for using one or more scripts to write a particular
language. Examples include the American English writing system,
the British English writing system, the French writing system, and
the Japanese writing system. <UNICODE>
character
A member of a set of elements used for the organization, control,
or representation of data. <ISOIEC10646>
There are at least three common definitions of the word
"character":
* a general description of a text entity
* a unit of a writing system, often synonymous with "letter" or
similar terms, but generalized to include digits and symbols of
various sorts
* the encoded entity itself
When people talk about characters, they usually intend one of the
first two definitions. The term "character" is often abbreviated
as "char".
A particular character is identified by its name, not by its
shape. A name may suggest a meaning, but the character may be
used for representing other meanings as well. A name may suggest
a shape, but that does not imply that only that shape is commonly
used in print, nor that the particular shape is associated only
with that name.
coded character
A character together with its coded representation. <ISOIEC10646>
<span class="grey">Hoffman & Klensin Best Current Practice [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
coded character set
A coded character set (CCS) is a set of unambiguous rules that
establishes a character set and the relationship between the
characters of the set and their coded representation.
<ISOIEC10646>
character encoding form
A character encoding form is a mapping from a coded character set
(CCS) to the actual code units used to represent the data.
<UNICODE>
repertoire
The collection of characters included in a character set. Also
called a character repertoire. <UNICODE>
glyph
A glyph is an image of a character that can be displayed after
being imaged onto a display surface. <<a href="./rfc6365">RFC6365</a>>
The Unicode Standard has a different definition that refers to an
abstract form that may represent different images when the same
character is rendered under different circumstances.
glyph code
A glyph code is a numeric code that refers to a glyph. Usually,
the glyphs contained in a font are referenced by their glyph code.
Glyph codes are local to a particular font; that is, a different
font containing the same glyphs may use different codes. <UNICODE>
transcoding
Transcoding is the process of converting text data from one
character encoding form to another. Transcoders work only at the
level of character encoding and do not parse the text. Note:
Transcoding may involve one-to-one, many-to-one, one-to-many, or
many-to-many mappings. Because some legacy mappings are glyphic,
they may not only be many-to-many, but also unordered: thus XYZ
may map to yxz. <CHARMOD>
In this definition, "many-to-one" means a sequence of characters
mapped to a single character. The "many" does not mean
alternative characters that map to the single character.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
character encoding scheme
A character encoding scheme (CES) is a character encoding form
plus byte serialization. There are many character encoding
schemes in Unicode, such as UTF-8 and UTF-16BE. <UNICODE>
Some CESs are associated with a single CCS; for example, UTF-8
[<a href="./rfc3629" title=""UTF-8, a transformation format of ISO 10646"">RFC3629</a>] applies only to the identical CCSs of ISO/IEC 10646 and
Unicode. Other CESs, such as ISO 2022, are associated with many
CCSs.
charset
A charset is a method of mapping a sequence of octets to a
sequence of abstract characters. A charset is, in effect, a
combination of one or more CCSs with a CES. Charset names are
registered by the IANA according to procedures documented in
[<a href="./rfc2978" title=""IANA Charset Registration Procedures"">RFC2978</a>]. <<a href="./rfc6365">RFC6365</a>>
Many protocol definitions use the term "character set" in their
descriptions. The terms "charset", or "character encoding scheme"
and "coded character set", are strongly preferred over the term
"character set" because "character set" has other definitions in
other contexts, particularly outside the IETF. When reading IETF
standards that use "character set" without defining the term, they
usually mean "a specific combination of one CCS with a CES",
particularly when they are talking about the "US-ASCII character
set".
internationalization
In the IETF, "internationalization" means to add or improve the
handling of non-ASCII text in a protocol. <<a href="./rfc6365">RFC6365</a>> A different
perspective, more appropriate to protocols that are designed for
global use from the beginning, is the definition used by W3C:
"Internationalization is the design and development of a
product, application or document content that enables easy
localization for target audiences that vary in culture, region,
or language." [<a href="#ref-W3C-i18n-Def" title=""Localization vs. Internationalization"">W3C-i18n-Def</a>]
Many protocols that handle text only handle one charset
(US-ASCII), or leave the question of what CCS and encoding are
used up to local guesswork (which leads, of course, to
interoperability problems). If multiple charsets are permitted,
they must be explicitly identified [<a href="./rfc2277" title=""IETF Policy on Character Sets and Languages"">RFC2277</a>]. Adding non-ASCII
text to a protocol allows the protocol to handle more scripts,
hopefully all of the ones useful in the world. In today's world,
<span class="grey">Hoffman & Klensin Best Current Practice [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
that is normally best accomplished by allowing Unicode encoded in
UTF-8 only, thereby shifting conversion issues away from
individual choices.
localization
The process of adapting an internationalized application platform
or application to a specific cultural environment. In
localization, the same semantics are preserved while the syntax
may be changed. [<a href="#ref-FRAMEWORK" title=""ISO/IEC TR 11017:1997(E). Information technology - Framework for internationalization, prepared by ISO/IEC JTC 1/SC 22/WG 20"">FRAMEWORK</a>]
Localization is the act of tailoring an application for a
different language or script or culture. Some internationalized
applications can handle a wide variety of languages. Typical
users only understand a small number of languages, so the program
must be tailored to interact with users in just the languages they
know.
The major work of localization is translating the user interface
and documentation. Localization involves not only changing the
language interaction, but also other relevant changes such as
display of numbers, dates, currency, and so on. The better
internationalized an application is, the easier it is to localize
it for a particular language and character encoding scheme.
Localization is rarely an IETF matter, and protocols that are
merely localized, even if they are serially localized for several
locations, are generally considered unsatisfactory for the global
Internet.
Do not confuse "localization" with "locale", which is described in
<a href="#section-8">Section 8</a> of this document.
i18n, l10n
These are abbreviations for "internationalization" and
"localization". <<a href="./rfc6365">RFC6365</a>>
"18" is the number of characters between the "i" and the "n" in
"internationalization", and "10" is the number of characters
between the "l" and the "n" in "localization".
<span class="grey">Hoffman & Klensin Best Current Practice [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
multilingual
The term "multilingual" has many widely varying definitions and
thus is not recommended for use in standards. Some of the
definitions relate to the ability to handle international
characters; other definitions relate to the ability to handle
multiple charsets; and still others relate to the ability to
handle multiple languages. <<a href="./rfc6365">RFC6365</a>>
displaying and rendering text
To display text, a system puts characters on a visual display
device such as a screen or a printer. To render text, a system
analyzes the character input to determine how to display the text.
The terms "display" and "render" are sometimes used
interchangeably. Note, however, that text might be rendered as
audio and/or tactile output, such as in systems that have been
designed for people with visual disabilities. <<a href="./rfc6365">RFC6365</a>>
Combining characters modify the display of the character (or, in
some cases, characters) that precede them. When rendering such
text, the display engine must either find the glyph in the font
that represents the base character and all of the combining
characters, or it must render the combination itself. Such
rendering can be straightforward, but it is sometimes complicated
when the combining marks interact with each other, such as when
there are two combining marks that would appear above the same
character. Formatting characters can also change the way that a
renderer would display text. Rendering can also be difficult for
some scripts that have complex display rules for base characters,
such as Arabic and Indic scripts.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Standards Bodies and Standards</span>
This section describes some of the standards bodies and standards
that appear in discussions of internationalization in the IETF. This
is an incomplete and possibly over-full list; listing too few bodies
or standards can be just as politically dangerous as listing too
many. Note that there are many other bodies that deal with
internationalization; however, few if any of them appear commonly in
IETF standards work.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. Standards Bodies</span>
ISO and ISO/IEC JTC 1
The International Organization for Standardization has been
involved with standards for characters since before the IETF was
started. ISO is a non-governmental group made up of national
bodies. Most of ISO's work in information technology is performed
jointly with a similar body, the International Electrotechnical
Commission (IEC) through a joint committee known as "JTC 1". ISO
and ISO/IEC JTC 1 have many diverse standards in the international
characters area; the one that is most used in the IETF is commonly
referred to as "ISO/IEC 10646", sometimes with a specific date.
ISO/IEC 10646 describes a CCS that covers almost all known written
characters in use today.
ISO/IEC 10646 is controlled by the group known as "ISO/IEC JTC 1/
SC 2 WG2", often called "SC2/WG2" or "WG2" for short. ISO
standards go through many steps before being finished, and years
often go by between changes to the base ISO/IEC 10646 standard
although amendments are now issued to track Unicode changes.
Information on WG2, and its work products, can be found at
<<a href="http://www.dkuug.dk/JTC1/SC2/WG2/">http://www.dkuug.dk/JTC1/SC2/WG2/</a>>. Information on SC2, and its
work products, can be found at <<a href="http://www.iso.org/iso/">http://www.iso.org/iso/</a>
standards_development/technical_committees/
list_of_iso_technical_committees/
iso_technical_committee.htm?commid=45050>
The standard comes as a base part and a series of attachments or
amendments. It is available in PDF form for downloading or in a
CD-ROM version. One example of how to cite the standard is given
in [<a href="./rfc3629" title=""UTF-8, a transformation format of ISO 10646"">RFC3629</a>]. Any standard that cites ISO/IEC 10646 needs to
evaluate how to handle the versioning problem that is relevant to
the protocol's needs.
ISO is responsible for other standards that might be of interest
to protocol developers concerned about internationalization.
ISO 639 [<a href="#ref-ISO639" title=""ISO 639-1:2002 - Code for the representation of names of languages - Part 1: Alpha-2 code"">ISO639</a>] specifies the names of languages and forms part
of the basis for the IETF's Language Tag work [<a href="./rfc5646" title=""Tags for Identifying Languages"">RFC5646</a>]. ISO 3166
[<a href="#ref-ISO3166" title=""ISO 3166-1:2006 - Codes for the representation of names of countries and their subdivisions -- Part 1: Country codes"">ISO3166</a>] specifies the names and code abbreviations for countries
and territories and is used in several protocols and databases
including names for country-code top level domain names. The
responsibilities of ISO TC 46 on Information and Documentation
<<a href="http://www.iso.org/iso/standards_development/technical_committees/list_of_iso_technical_committees/iso_technical_committee.htm?commid=48750">http://www.iso.org/iso/standards_development/</a>
<a href="http://www.iso.org/iso/standards_development/technical_committees/list_of_iso_technical_committees/iso_technical_committee.htm?commid=48750">technical_committees/list_of_iso_technical_committees/</a>
<a href="http://www.iso.org/iso/standards_development/technical_committees/list_of_iso_technical_committees/iso_technical_committee.htm?commid=48750">iso_technical_committee.htm?commid=48750</a>> include a series of
standards for transliteration of various languages into Latin
characters.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
Another relevant ISO group was JTC 1/SC22/WG20, which was
responsible for internationalization in JTC 1, such as for
international string ordering. Information on WG20, and its work
products, can be found at <<a href="http://www.dkuug.dk/jtc1/sc22/wg20/">http://www.dkuug.dk/jtc1/sc22/wg20/</a>>.
The specific tasks of SC22/WG20 were moved from SC22 into SC2, and
there has been little significant activity since that occurred.
Unicode Consortium
The second important group for international character standards
is the Unicode Consortium. The Unicode Consortium is a trade
association of companies, governments, and other groups interested
in promoting the Unicode Standard [<a href="#ref-UNICODE" title=""The Unicode Standard, Version 6.0"">UNICODE</a>]. The Unicode Standard
is a CCS whose repertoire and code points are identical to
ISO/IEC 10646. The Unicode Consortium has added features to the
base CCS that make it more useful in protocols, such as defining
attributes for each character. Examples of these attributes
include case conversion and numeric properties.
The actual technical and definitional work of the Unicode
Consortium is done in the Unicode Technical Committee (UTC). The
terms "UTC" and "Unicode Consortium" are often treated,
imprecisely, as synonymous in the IETF.
The Unicode Consortium publishes addenda to the Unicode Standard
as Unicode Technical Reports. There are many types of technical
reports at various stages of maturity. The Unicode Standard and
affiliated technical reports can be found at
<<a href="http://www.unicode.org/">http://www.unicode.org/</a>>.
A reciprocal agreement between the Unicode Consortium and
ISO/IEC JTC 1/SC 2 provides for ISO/IEC 10646 and The Unicode
Standard to track each other for definitions of characters and
assignments of code points. Updates, often in the form of
amendments, to the former sometimes lag updates to the latter for
a short period, but the gap has rarely been significant in recent
years.
At the time that the IETF character set policy [<a href="./rfc2277" title=""IETF Policy on Character Sets and Languages"">RFC2277</a>] was
established and the first version of this terminology
specification was published, there was a strong preference in the
IETF community for references to ISO/IEC 10646 (rather than
Unicode) when possible. That preference largely reflected a more
general IETF preference for referencing established open
international standards over specifications from consortia.
However, the Unicode definitions of character properties and
classes are not part of ISO/IEC 10646. Because IETF
specifications are increasingly dependent on those definitions
<span class="grey">Hoffman & Klensin Best Current Practice [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
(for example, see the explanation in <a href="#section-4.2">Section 4.2</a>) and the Unicode
specifications are freely available online in convenient machine-
readable form, the IETF's preference has shifted to referencing
the Unicode Standard. The latter is especially important when
version consistency between code points (either standard) and
Unicode properties (Unicode only) is required.
World Wide Web Consortium (W3C)
This group created and maintains the standard for XML, the markup
language for text that has become very popular. XML has always
been fully internationalized so that there is no need for a new
version to handle international text. However, in some
circumstances, XML files may be sensitive to differences among
Unicode versions.
local and regional standards organizations
Just as there are many native CCSs and charsets, there are many
local and regional standards organizations to create and support
them. Common examples of these are ANSI (United States), CEN/ISSS
(Europe), JIS (Japan), and SAC (China).
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Encodings and Transformation Formats of ISO/IEC 10646</span>
Characters in the ISO/IEC 10646 CCS can be expressed in many ways.
Historically, "encoding forms" are both direct addressing methods,
while "transformation formats" are methods for expressing encoding
forms as bits on the wire. That distinction has mostly disappeared
in recent years.
Documents that discuss characters in the ISO/IEC 10646 CCS often need
to list specific characters. <a href="./rfc5137">RFC 5137</a> describes the common methods
for doing so in IETF documents, and these practices have been adopted
by many other communities as well.
Basic Multilingual Plane (BMP)
The BMP is composed of the first 2^16 code points in ISO/IEC 10646
and contains almost all characters in contemporary use. The BMP
is also called "Plane 0".
UCS-2 and UCS-4
UCS-2 and UCS-4 are the two encoding forms historically defined
for ISO/IEC 10646. UCS-2 addresses only the BMP. Because many
useful characters (such as many Han characters) have been defined
outside of the BMP, many people consider UCS-2 to be obsolete.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
UCS-4 addresses the entire range of code points from ISO/IEC 10646
(by agreement between ISO/IEC JTC 1 SC2 and the Unicode
Consortium, a range from 0..0x10FFFF) as 32-bit values with zero
padding to the left. UCS-4 is identical to UTF-32BE (without use
of a BOM (see below)); UTF-32BE is now the preferred term.
UTF-8
UTF-8 [<a href="./rfc3629" title=""UTF-8, a transformation format of ISO 10646"">RFC3629</a>] is the preferred encoding for IETF protocols.
Characters in the BMP are encoded as one, two, or three octets.
Characters outside the BMP are encoded as four octets. Characters
from the US-ASCII repertoire have the same on-the-wire
representation in UTF-8 as they do in US-ASCII. The IETF-specific
definition of UTF-8 in <a href="./rfc3629">RFC 3629</a> is identical to that in recent
versions of the Unicode Standard (e.g., in <a href="#section-3.9">Section 3.9</a> of Version
6.0 [<a href="#ref-UNICODE" title=""The Unicode Standard, Version 6.0"">UNICODE</a>]).
UTF-16, UTF-16BE, and UTF-16LE
UTF-16, UTF-16BE, and UTF-16LE, three transformation formats
described in [<a href="./rfc2781" title=""UTF-16, an encoding of ISO 10646"">RFC2781</a>] and defined in The Unicode Standard
(Sections <a href="#section-3.9">3.9</a> and <a href="#section-16.8">16.8</a> of Version 6.0), are not required by any
IETF standards, and are thus used much less often in protocols
than UTF-8. Characters in the BMP are always encoded as two
octets, and characters outside the BMP are encoded as four octets
using a "surrogate pair" arrangement. The latter is not part of
UCS-2, marking the difference between UTF-16 and UCS-2. The three
UTF-16 formats differ based on the order of the octets and the
presence or absence of a special lead-in ordering identifier
called the "byte order mark" or "BOM".
UTF-32
The Unicode Consortium and ISO/IEC JTC 1 have defined UTF-32 as a
transformation format that incorporates the integer code point
value right-justified in a 32-bit field. As with UTF-16, the byte
order mark (BOM) can be used and UTF-32BE and UTF-32LE are
defined. UTF-32 and UCS-4 are essentially equivalent and the
terms are often used interchangeably.
SCSU and BOCU-1
The Unicode Consortium has defined an encoding, SCSU [<a href="#ref-UTR6" title=""Unicode Technical Standard #6: A Standard Compression Scheme for Unicode"">UTR6</a>], which
is designed to offer good compression for typical text. A
different encoding that is meant to be MIME-friendly, BOCU-1, is
described in [<a href="#ref-UTN6" title=""Unicode Technical Note #5: BOCU-1: MIME-Compatible Unicode Compression"">UTN6</a>]. Although compression is attractive, as
opposed to UTF-8, neither of these (at the time of this writing)
has attracted much interest.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
The compression provided as a side effect of the Punycode
algorithm [<a href="./rfc3492" title=""Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)"">RFC3492</a>] is heavily used in some contexts, especially
IDNA [<a href="./rfc5890" title=""Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework"">RFC5890</a>], but imposes some restrictions. (See also
<a href="#section-7">Section 7</a>.)
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Native CCSs and Charsets</span>
Before ISO/IEC 10646 was developed, many countries developed their
own CCSs and charsets. Some of these were adopted into international
standards for the relevant scripts or writing systems. Many dozen of
these are in common use on the Internet today. Examples include
ISO 8859-5 for Cyrillic and Shift-JIS for Japanese scripts.
The official list of the registered charset names for use with IETF
protocols is maintained by IANA and can be found at
<<a href="http://www.iana.org/assignments/character-sets">http://www.iana.org/assignments/character-sets</a>>. The list contains
preferred names and aliases. Note that this list has historically
contained many errors, such as names that are in fact not charsets or
references that do not give enough detail to reliably map names to
charsets.
Probably the most well-known native CCS is ASCII [<a href="#ref-US-ASCII" title=""Coded Character Set -- 7-bit American Standard Code for Information Interchange, ANSI X3.4-1986"">US-ASCII</a>]. This
CCS is used as the basis for keywords and parameter names in many
IETF protocols, and as the sole CCS in numerous IETF protocols that
have not yet been internationalized. ASCII became the basis for
ISO/IEC 646 which, in turn, formed the basis for many national and
international standards, such as the ISO 8859 series, that mix Basic
Latin characters with characters from another script.
It is important to note that, strictly speaking, "ASCII" is a CCS and
repertoire, not an encoding. The encoding used for ASCII in IETF
protocols involves the 7-bit integer ASCII code point right-justified
in an 8-bit field and is sometimes described as the "Network Virtual
Terminal" or "NVT" encoding [<a href="./rfc5198" title=""Unicode Format for Network Interchange"">RFC5198</a>]. Less formally, "ASCII" and
"NVT" are often used interchangeably. However, "non-ASCII" refers
only to characters outside the ASCII repertoire and is not linked to
a specific encoding. See <a href="#section-4.2">Section 4.2</a>.
A Unicode publication describes issues involved in mapping character
data between charsets, and an XML format for mapping table data
[<a href="#ref-UTR22" title=""Unicode Technical Standard #22: Unicode Character Mapping Markup Language"">UTR22</a>].
<span class="grey">Hoffman & Klensin Best Current Practice [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Character Issues</span>
This section contains terms and topics that are commonly used in
character handling and therefore are of concern to people adding non-
ASCII text handling to protocols. These topics are standardized
outside the IETF.
code point
A value in the codespace of a repertoire. For all common
repertoires developed in recent years, code point values are
integers (code points for ASCII and its immediate descendants were
defined in terms of column and row positions of a table).
combining character
A member of an identified subset of the coded character set of
ISO/IEC 10646 intended for combination with the preceding non-
combining graphic character, or with a sequence of combining
characters preceded by a non-combining character. Combining
characters are inherently non-spacing. <ISOIEC10646>
composite sequence or combining character sequence
A sequence of graphic characters consisting of a non-combining
character followed by one or more combining characters. A graphic
symbol for a composite sequence generally consists of the
combination of the graphic symbols of each character in the
sequence. The Unicode Standard often uses the term "combining
character sequence" to refer to composite sequences. A composite
sequence is not a character and therefore is not a member of the
repertoire of ISO/IEC 10646. <ISOIEC10646> However, Unicode now
assigns names to some such sequences especially when the names are
required to match terminology in other standards [<a href="#ref-UAX34" title=""Unicode Standard Annex #34: Unicode Named Character Sequences"">UAX34</a>].
In some CCSs, some characters consist of combinations of other
characters. For example, the letter "a with acute" might be a
combination of the two characters "a" and "combining acute", or it
might be a combination of the three characters "a", a non-
destructive backspace, and an acute. In the same or other CCSs,
it might be available as a single code point. The rules for
combining two or more characters are called "composition rules",
and the rules for taking apart a character into other characters
are called "decomposition rules". The result of decomposition is
called a "decomposed character"; the result of composition is
usually a "precomposed character".
<span class="grey">Hoffman & Klensin Best Current Practice [Page 16]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-17" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
normalization
Normalization is the transformation of data to a normal form, for
example, to unify spelling. <UNICODE>
Note that the phrase "unify spelling" in the definition above does
not mean unifying different strings with the same meaning as words
(such as "color" and "colour"). Instead, it means unifying
different character sequences that are intended to form the same
composite characters, such as "<n><combining tilde>" and "<n with
tilde>" (where "<n>" is U+006E, "<combining tilde>" is U+0303, and
"<n with tilde>" is U+00F1).
The purpose of normalization is to allow two strings to be
compared for equivalence. The strings "<a><n><combining
tilde><o>" and "<a><n with tilde><o>" would be shown identically
on a text display device. If a protocol designer wants those two
strings to be considered equivalent during comparison, the
protocol must define where normalization occurs.
The terms "normalization" and "canonicalization" are often used
interchangeably. Generally, they both mean to convert a string of
one or more characters into another string based on standardized
rules. However, in Unicode, "canonicalization" or similar terms
are used to refer to a particular type of normalization
equivalence ("canonical equivalence" in contrast to "compatibility
equivalence"), so the term should be used with some care. Some
CCSs allow multiple equivalent representations for a written
string; normalization selects one among multiple equivalent
representations as a base for reference purposes in comparing
strings. In strings of text, these rules are usually based on
decomposing combined characters or composing characters with
combining characters. Unicode Standard Annex #15 [<a href="#ref-UTR15" title=""Unicode Standard Annex #15: Unicode Normalization Forms"">UTR15</a>]
describes the process and many forms of normalization in detail.
Normalization is important when comparing strings to see if they
are the same.
The Unicode NFC and NFD normalizations support canonical
equivalence; NFKC and NFKD support canonical and compatibility
equivalence.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 17]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-18" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
case
Case is the feature of certain alphabets where the letters have
two (or occasionally more) distinct forms. These forms, which may
differ markedly in shape and size, are called the uppercase letter
(also known as capital or majuscule) and the lowercase letter
(also known as small or minuscule). Case mapping is the
association of the uppercase and lowercase forms of a letter.
<UNICODE>
There is usually (but not always) a one-to-one mapping between the
same letter in the two cases. However, there are many examples of
characters that exist in one case but for which there is no
corresponding character in the other case or for which there is a
special mapping rule, such as the Turkish dotless "i", some Greek
characters with modifiers, and characters like the German Sharp S
(Eszett) and Greek Final Sigma that traditionally do not have
uppercase forms. Case mapping can even be dependent on locale or
language. Converting text to have only a single case, primarily
for comparison purposes, is called "case folding". Because of the
various unusual cases, case mapping can be quite controversial and
some case folding algorithms even more so. For example, some
programming languages such as Java have case-folding algorithms
that are locale-sensitive; this makes those algorithms incredibly
resource-intensive and makes them act differently depending on the
location of the system at the time the algorithm is used.
sorting and collation
Collating is the process of ordering units of textual information.
Collation is usually specific to a particular language or even to
a particular application or locale. It is sometimes known as
alphabetizing, although alphabetization is just a special case of
sorting and collation. <UNICODE>
Collation is concerned with the determination of the relative
order of any particular pair of strings, and algorithms concerned
with collation focus on the problem of providing appropriate
weighted keys for string values, to enable binary comparison of
the key values to determine the relative ordering of the strings.
The relative orders of letters in collation sequences can differ
widely based on the needs of the system or protocol defining the
collation order. For example, even within ASCII characters, there
are two common and very different collation orders: "A, a, B,
b,..." and "A, B, C, ..., Z, a, b,...", with additional variations
for lowercase first and digits before and after letters.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 18]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-19" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
In practice, it is rarely necessary to define a collation sequence
for characters drawn from different scripts, but arranging such
sequences so as to not surprise users is usually particularly
problematic.
Sorting is the process of actually putting data records into
specified orders, according to criteria for comparison between the
records. Sorting can apply to any kind of data (including textual
data) for which an ordering criterion can be defined. Algorithms
concerned with sorting focus on the problem of performance (in
terms of time, memory, or other resources) in actually putting the
data records into the desired order.
A sorting algorithm for string data can be internationalized by
providing it with the appropriate collation-weighted keys
corresponding to the strings to be ordered.
Many processes have a need to order strings in a consistent
(sorted) sequence. For only a few CCS/CES combinations, there is
an obvious sort order that can be applied without reference to the
linguistic meaning of the characters: the code point order is
sufficient for sorting. That is, the code point order is also the
order that a person would use in sorting the characters. For many
CCS/CES combinations, the code point order would make no sense to
a person and therefore is not useful for sorting if the results
will be displayed to a person.
Code point order is usually not how any human educated by a local
school system expects to see strings ordered; if one orders to the
expectations of a human, one has a "language-specific" or "human
language" sort. Sorting to code point order will seem
inconsistent if the strings are not normalized before sorting
because different representations of the same character will sort
differently. This problem may be smaller with a language-specific
sort.
code table
A code table is a table showing the characters allocated to the
octets in a code. <ISOIEC10646>
Code tables are also commonly called "code charts".
<span class="grey">Hoffman & Klensin Best Current Practice [Page 19]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-20" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. Types of Characters</span>
The following definitions of types of characters do not clearly
delineate each character into one type, nor do they allow someone to
accurately predict what types would apply to a particular character.
The definitions are intended for application designers to help them
think about the many (sometimes confusing) properties of text.
alphabetic
An informative Unicode property. Characters that are the primary
units of alphabets and/or syllabaries, whether combining or non-
combining. This includes composite characters that are canonical
equivalents to a combining character sequence of an alphabetic
base character plus one or more combining characters: letter
digraphs; contextual variants of alphabetic characters; ligatures
of alphabetic characters; contextual variants of ligatures;
modifier letters; letterlike symbols that are compatibility
equivalents of single alphabetic letters; and miscellaneous letter
elements. <UNICODE>
ideographic
Any symbol that primarily denotes an idea (or meaning) in contrast
to a sound (or pronunciation), for example, a symbol showing a
telephone or the Han characters used in Chinese, Japanese, and
Korean. <UNICODE>
While Unicode and many other systems use this term to refer to all
Han characters, strictly speaking not all of those characters are
actually ideographic. Some are pictographic (such as the
telephone example above), some are used phonetically, and so on.
However, the convention is to describe the script as ideographic
as contrasted to alphabetic.
digit or number
All modern writing systems use decimal digits in some form; some
older ones use non-positional or other systems. Different scripts
may have their own digits. Unicode distinguishes between numbers
and other kinds of characters by assigning a special General
Category value to them and subdividing that value to distinguish
between decimal digits, letter digits, and other digits. <UNICODE>
<span class="grey">Hoffman & Klensin Best Current Practice [Page 20]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-21" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
punctuation
Characters that separate units of text, such as sentences and
phrases, thus clarifying the meaning of the text. The use of
punctuation marks is not limited to prose; they are also used in
mathematical and scientific formulae, for example. <UNICODE>
symbol
One of a set of characters other than those used for letters,
digits, or punctuation, and representing various concepts
generally not connected to written language use per se. <<a href="./rfc6365">RFC6365</a>>
Examples of symbols include characters for mathematical operators,
symbols for optical character recognition (OCR), symbols for box-
drawing or graphics, as well as symbols for dingbats, arrows,
faces, and geometric shapes. Unicode has a property that
identifies symbol characters.
nonspacing character
A combining character whose positioning in presentation is
dependent on its base character. It generally does not consume
space along the visual baseline in and of itself. <UNICODE>
A combining acute accent (U+0301) is an example of a nonspacing
character.
diacritic
A mark applied or attached to a symbol to create a new symbol that
represents a modified or new value. They can also be marks
applied to a symbol irrespective of whether they change the value
of that symbol. In the latter case, the diacritic usually
represents an independent value (for example, an accent, tone, or
some other linguistic information). Also called diacritical mark
or diacritical. <UNICODE>
control character
The 65 characters in the ranges U+0000..U+001F and U+007F..U+009F.
The basic space character, U+0020, is often considered as a
control character as well, making the total number 66. They are
also known as control codes. In terminology adopted by Unicode
from ASCII and the ISO 8859 standards, these codes are treated as
belonging to three ranges: "C0" (for U+0000..U+001F), "C1" (for
U+0080...U+009F), and the single control character "DEL" (U+007F).
<UNICODE>
<span class="grey">Hoffman & Klensin Best Current Practice [Page 21]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-22" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
Occasionally, in other vocabularies, the term "control character"
is used to describe any character that does not normally have an
associated glyph; it is also sometimes used for device control
sequences [<a href="#ref-ISO6429" title=""ISO/IEC, "">ISO6429</a>]. Neither of those usages is appropriate to
internationalization terminology in the IETF.
formatting character
Characters that are inherently invisible but that have an effect
on the surrounding characters. <UNICODE>
Examples of formatting characters include characters for
specifying the direction of text and characters that specify how
to join multiple characters.
compatibility character or compatibility variant
A graphic character included as a coded character of ISO/IEC 10646
primarily for compatibility with existing coded character sets.
<ISOIEC10646)>
The Unicode definition of compatibility charter also includes
characters that have been incorporated for other reasons. Their
list includes several separate groups of characters included for
compatibility purposes: halfwidth and fullwidth characters used
with East Asian scripts, Arabic contextual forms (e.g., initial or
final forms), some ligatures, deprecated formatting characters,
variant forms of characters (or even copies of them) for
particular uses (e.g., phonetic or mathematical applications),
font variations, CJK compatibility ideographs, and so on. For
additional information and the separate term "compatibility
decomposable character", see the Unicode standard.
For example, U+FF01 (FULLWIDTH EXCLAMATION MARK) was included for
compatibility with Asian charsets that include full-width and
half-width ASCII characters.
Some efforts in the IETF have concluded that it would be useful to
support mapping of some groups of compatibility equivalents and
not others (e.g., supporting or mapping width variations while
preserving or rejecting mathematical variations). See the IDNA
Mapping document [<a href="./rfc5895" title=""Mapping Characters for Internationalized Domain Names in Applications (IDNA) 2008"">RFC5895</a>] for one example.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 22]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-23" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. Differentiation of Subsets</span>
Especially as existing IETF standards are internationalized, it is
necessary to describe collections of characters including especially
various subsets of Unicode. Because Unicode includes ways to code
substantially all characters in contemporary use, subsets of the
Unicode repertoire can be a useful tool for defining these
collections as repertoires independent of specific Unicode coding.
However specific collections are defined, it is important to remember
that, while older CCSs such as ASCII and the ISO 8859 family are
close-ended and fixed, Unicode is open-ended, with new character
definitions, and often new scripts, being added every year or so.
So, while, e.g., an ASCII subset, such as "uppercase letters", can be
specified as a range of code points (4/1 to 5/10 for that example),
similar definitions for Unicode either have to be specified in terms
of Unicode properties or are very dependent on Unicode versions (and
the relevant version must be identified in any specification). See
the IDNA code point specification [<a href="./rfc5892" title=""The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)"">RFC5892</a>] for an example of
specification by combinations of properties.
Some terms are commonly used in the IETF to define character ranges
and subsets. Some of these are imprecise and can cause confusion if
not used carefully.
non-ASCII
The term "non-ASCII" strictly refers to characters other than
those that appear in the ASCII repertoire, independent of the CCS
or encoding used for them. In practice, if a repertoire such as
that of Unicode is established as context, "non-ASCII" refers to
characters in that repertoire that do not appear in the ASCII
repertoire. "Outside the ASCII repertoire" and "outside the ASCII
range" are practical, and more precise, synonyms for "non-ASCII".
letters
The term "letters" does not have an exact equivalent in the
Unicode standard. Letters are generally characters that are used
to write words, but that means very different things in different
languages and cultures.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 23]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-24" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. User Interface for Text</span>
Although the IETF does not standardize user interfaces, many
protocols make assumptions about how a user will enter or see text
that is used in the protocol. Internationalization challenges
assumptions about the type and limitations of the input and output
devices that may be used with applications that use various
protocols. It is therefore useful to consider how users typically
interact with text that might contain one or more non-ASCII
characters.
input methods
An input method is a mechanism for a person to enter text into an
application. <<a href="./rfc6365">RFC6365</a>>
Text can be entered into a computer in many ways. Keyboards are
by far the most common device used, but many characters cannot be
entered on typical computer keyboards in a single stroke. Many
operating systems come with system software that lets users input
characters outside the range of what is allowed by keyboards.
For example, there are dozens of different input methods for Han
characters in Chinese, Japanese, and Korean. Some start with
phonetic input through the keyboard, while others use the number
of strokes in the character. Input methods are also needed for
scripts that have many diacritics, such as European or Vietnamese
characters that have two or three diacritics on a single
alphabetic character.
The term "input method editor" (IME) is often used generically to
describe the tools and software used to deal with input of
characters on a particular system.
rendering rules
A rendering rule is an algorithm that a system uses to decide how
to display a string of text. <<a href="./rfc6365">RFC6365</a>>
Some scripts can be directly displayed with fonts, where each
character from an input stream can simply be copied from a glyph
system and put on the screen or printed page. Other scripts need
rules that are based on the context of the characters in order to
render text for display.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 24]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-25" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
Some examples of these rendering rules include:
* Scripts such as Arabic (and many others), where the form of the
letter changes depending on the adjacent letters, whether the
letter is standing alone, at the beginning of a word, in the
middle of a word, or at the end of a word. The rendering rules
must choose between two or more glyphs.
* Scripts such as the Indic scripts, where consonants may change
their form if they are adjacent to certain other consonants or
may be displayed in an order different from the way they are
stored and pronounced. The rendering rules must choose between
two or more glyphs.
* Arabic and Hebrew scripts, where the order of the characters
displayed are changed by the bidirectional properties of the
alphabetic and other characters and with right-to-left and
left-to-right ordering marks. The rendering rules must choose
the order that characters are displayed.
* Some writing systems cannot have their rendering rules suitably
defined using mechanisms that are now defined in the Unicode
Standard. None of those languages are in active non-scholarly
use today.
* Many systems use a special rendering rule when they lack a font
or other mechanism for rendering a particular character
correctly. That rule typically involves substitution of a
small open box or a question mark for the missing character.
See "undisplayable character" below.
graphic symbol
A graphic symbol is the visual representation of a graphic
character or of a composite sequence. <ISOIEC10646>
font
A font is a collection of glyphs used for the visual depiction of
character data. A font is often associated with a set of
parameters (for example, size, posture, weight, and serifness),
which, when set to particular values, generates a collection of
imagable glyphs. <UNICODE>
The term "font" is often used interchangeably with "typeface". As
historically used in typography, a typeface is a family of one or
more fonts that share a common general design. For example,
"Times Roman" is actually a typeface, with a collection of fonts
<span class="grey">Hoffman & Klensin Best Current Practice [Page 25]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-26" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
such as "Times Roman Bold", "Times Roman Medium", "Times Roman
Italic", and so on. Some sources even consider different type
sizes within a typeface to be different fonts. While those
distinctions are rarely important for internationalization
purposes, there are exceptions. Those writing specifications
should be very careful about definitions in cases in which the
exceptions might lead to ambiguity.
bidirectional display
The process or result of mixing left-to-right oriented text and
right-to-left oriented text in a single line is called
bidirectional display, often abbreviated as "bidi". <UNICODE>
Most of the world's written languages are displayed left-to-right.
However, many widely-used written languages such as ones based on
the Hebrew or Arabic scripts are displayed primarily right-to-left
(numerals are a common exception in the modern scripts). Right-
to-left text often confuses protocol writers because they have to
keep thinking in terms of the order of characters in a string in
memory, an order that might be different from what they see on the
screen. (Note that some languages are written both horizontally
and vertically and that some historical ones use other display
orderings.)
Further, bidirectional text can cause confusion because there are
formatting characters in ISO/IEC 10646 that cause the order of
display of text to change. These explicit formatting characters
change the display regardless of the implicit left-to-right or
right-to-left properties of characters. Text that might contain
those characters typically requires careful processing before
being sorted or compared for equality.
It is common to see strings with text in both directions, such as
strings that include both text and numbers, or strings that
contain a mixture of scripts.
Unicode has a long and incredibly detailed algorithm for
displaying bidirectional text [<a href="#ref-UAX9" title=""Unicode Standard Annex #9: Unicode Bidirectional Algorithm"">UAX9</a>].
undisplayable character
A character that has no displayable form. <<a href="./rfc6365">RFC6365</a>>
For instance, the zero-width space (U+200B) cannot be displayed
because it takes up no horizontal space. Formatting characters
such as those for setting the direction of text are also
undisplayable. Note, however, that every character in [<a href="#ref-UNICODE" title=""The Unicode Standard, Version 6.0"">UNICODE</a>]
<span class="grey">Hoffman & Klensin Best Current Practice [Page 26]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-27" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
has a glyph associated with it, and that the glyphs for
undisplayable characters are enclosed in a dashed square as an
indication that the actual character is undisplayable.
The property of a character that causes it to be undisplayable is
intrinsic to its definition. Undisplayable characters can never
be displayed in normal text (the dashed square notation is used
only in special circumstances). Printable characters whose
Unicode definitions are associated with glyphs that cannot be
rendered on a particular system are not, in this sense,
undisplayable.
writing style
Conventions of writing the same script in different styles.
<<a href="./rfc6365">RFC6365</a>>
Different communities using the script may find text in different
writing styles difficult to read and possibly unintelligible. For
example, the Perso-Arabic Nastalique writing style and the Arabic
Naskh writing style both use the Arabic script but have very
different renderings and are not mutually comprehensible. Writing
styles may have significant impact on internationalization; for
example, the Nastalique writing style requires significantly more
line height than Naskh writing style.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Text in Current IETF Protocols</span>
Many IETF protocols started off being fully internationalized, while
others have been internationalized as they were revised. In this
process, IETF members have seen patterns in the way that many
protocols use text. This section describes some specific protocol
interactions with text.
protocol elements
Protocol elements are uniquely named parts of a protocol.
<<a href="./rfc6365">RFC6365</a>>
Almost every protocol has named elements, such as "source port" in
TCP. In some protocols, the names of the elements (or text tokens
for the names) are transmitted within the protocol. For example,
in SMTP and numerous other IETF protocols, the names of the verbs
are part of the command stream. The names are thus part of the
protocol standard. The names of protocol elements are not
normally seen by end users, and it is rarely appropriate to
internationalize protocol element names (even while the elements
themselves can be internationalized).
<span class="grey">Hoffman & Klensin Best Current Practice [Page 27]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-28" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
name spaces
A name space is the set of valid names for a particular item, or
the syntactic rules for generating these valid names. <<a href="./rfc6365">RFC6365</a>>
Many items in Internet protocols use names to identify specific
instances or values. The names may be generated (by some
prescribed rules), registered centrally (e.g., such as with IANA),
or have a distributed registration and control mechanism, such as
the names in the DNS.
on-the-wire encoding
The encoding and decoding used before and after transmission over
the network is often called the "on-the-wire" (or sometimes just
"wire") format. <<a href="./rfc6365">RFC6365</a>>
Characters are identified by code points. Before being
transmitted in a protocol, they must first be encoded as bits and
octets. Similarly, when characters are received in a
transmission, they have been encoded, and a protocol that needs to
process the individual characters needs to decode them before
processing.
parsed text
Text strings that have been analyzed for subparts. <<a href="./rfc6365">RFC6365</a>>
In some protocols, free text in text fields might be parsed. For
example, many mail user agents (MUAs) will parse the words in the
text of the Subject: field to attempt to thread based on what
appears after the "Re:" prefix.
Such conventions are very sensitive to localization. If, for
example, a form like "Re:" is altered by an MUA to reflect the
language of the sender or recipient, a system that subsequently
does threading may not recognize the replacement term as a
delimiter string.
charset identification
Specification of the charset used for a string of text. <<a href="./rfc6365">RFC6365</a>>
Protocols that allow more than one charset to be used in the same
place should require that the text be identified with the
appropriate charset. Without this identification, a program
looking at the text cannot definitively discern the charset of the
text. Charset identification is also called "charset tagging".
<span class="grey">Hoffman & Klensin Best Current Practice [Page 28]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-29" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
language identification
Specification of the human language used for a string of text.
<<a href="./rfc6365">RFC6365</a>>
Some protocols (such as MIME and HTTP) allow text that is meant
for machine processing to be identified with the language used in
the text. Such identification is important for machine processing
of the text, such as by systems that render the text by speaking
it. Language identification is also called "language tagging".
The IETF "LTRU" standards [<a href="./rfc5646" title=""Tags for Identifying Languages"">RFC5646</a>] and [<a href="./rfc4647" title=""Matching of Language Tags"">RFC4647</a>] provide a
comprehensive model for language identification.
MIME
MIME (Multipurpose Internet Mail Extensions) is a message format
that allows for textual message bodies and headers in character
sets other than US-ASCII in formats that require ASCII (most
notably <a href="./rfc5322">RFC 5322</a>, the standard for Internet mail headers
[<a href="./rfc5322" title=""Internet Message Format"">RFC5322</a>]). MIME is described in RFCs 2045 through 2049, as well
as more recent RFCs. <<a href="./rfc6365">RFC6365</a>>
transfer encoding syntax
A transfer encoding syntax (TES) (sometimes called a transfer
encoding scheme) is a reversible transform of already encoded data
that is represented in one or more character encoding schemes.
<<a href="./rfc6365">RFC6365</a>>
TESs are useful for encoding types of character data into another
format, usually for allowing new types of data to be transmitted
over legacy protocols. The main examples of TESs used in the IETF
include Base64 and quoted-printable. MIME identifies the transfer
encoding syntax for body parts as a Content-transfer-encoding,
occasionally abbreviated C-T-E.
Base64
Base64 is a transfer encoding syntax that allows binary data to be
represented by the ASCII characters A through Z, a through z, 0
through 9, +, /, and =. It is defined in [<a href="./rfc2045" title=""Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies"">RFC2045</a>]. <<a href="./rfc6365">RFC6365</a>>
quoted printable
Quoted printable is a transfer encoding syntax that allows strings
that have non-ASCII characters mixed in with mostly ASCII
printable characters to be somewhat human readable. It is
described in [<a href="./rfc2047" title=""MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text"">RFC2047</a>]. <<a href="./rfc6365">RFC6365</a>>
<span class="grey">Hoffman & Klensin Best Current Practice [Page 29]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-30" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
The quoted printable syntax is generally considered to be a
failure at being readable. It is jokingly referred to as "quoted
unreadable".
XML
XML (which is an approximate abbreviation for Extensible Markup
Language) is a popular method for structuring text. XML text that
is not encoded as UTF-8 is explicitly tagged with charsets, and
all text in XML consists only of Unicode characters. The
specification for XML can be found at <<a href="http://www.w3.org/XML/">http://www.w3.org/XML/</a>>.
<<a href="./rfc6365">RFC6365</a>>
ASN.1 text formats
The ASN.1 data description language has many formats for text
data. The formats allow for different repertoires and different
encodings. Some of the formats that appear in IETF standards
based on ASN.1 include IA5String (all ASCII characters),
PrintableString (most ASCII characters, but missing many
punctuation characters), BMPString (characters from ISO/IEC 10646
plane 0 in UTF-16BE format), UTF8String (just as the name
implies), and TeletexString (also called T61String).
ASCII-compatible encoding (ACE)
Starting in 1996, many ASCII-compatible encoding schemes (which
are actually transfer encoding syntaxes) have been proposed as
possible solutions for internationalizing host names and some
other purposes. Their goal is to be able to encode any string of
ISO/IEC 10646 characters using the preferred syntax for domain
names (as described in STD 13). At the time of this writing, only
the ACE produced by Punycode [<a href="./rfc3492" title=""Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)"">RFC3492</a>] has become an IETF
standard.
The choice of ACE forms to internationalize legacy protocols must
be made with care as it can cause some difficult side effects
[<a href="./rfc6055" title=""IAB Thoughts on Encodings for Internationalized Domain Names"">RFC6055</a>].
LDH label
The classical label form used in the DNS and most applications
that call on it, albeit with some additional restrictions,
reflects the early syntax of "hostnames" [<a href="./rfc0952" title=""DoD Internet host table specification"">RFC0952</a>] and limits
those names to ASCII letters, digits, and embedded hyphens. The
hostname syntax is identical to that described as the "preferred
name syntax" in <a href="./rfc1034#section-3.5">Section 3.5 of RFC 1034</a> [<a href="./rfc1034" title=""Domain names - concepts and facilities"">RFC1034</a>] as modified by
<span class="grey">Hoffman & Klensin Best Current Practice [Page 30]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-31" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<a href="./rfc1123">RFC 1123</a> [<a href="./rfc1123" title=""Requirements for Internet Hosts - Application and Support"">RFC1123</a>]. LDH labels are defined in a more restrictive
and precise way for internationalization contexts as part of the
IDNA2008 specification [<a href="./rfc5890" title=""Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework"">RFC5890</a>].
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. Terms Associated with Internationalized Domain Names</span>
<span class="h3"><a class="selflink" id="section-7.1" href="#section-7.1">7.1</a>. IDNA Terminology</span>
The current specification for Internationalized Domain Names (IDNs),
known formally as Internationalized Domain Names for Applications or
IDNA, is referred to in the IETF and parts of the broader community
as "IDNA2008" and consists of several documents. <a href="#section-2.3">Section 2.3</a> of the
first of those documents, commonly known as "IDNA2008 Definitions"
[<a href="./rfc5890" title=""Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework"">RFC5890</a>] provides definitions and introduces some specialized terms
for differentiating among types of DNS labels in an IDN context.
Those terms are listed in the table below; see <a href="./rfc5890">RFC 5890</a> for the
specific definitions if needed.
ACE Prefix
A-label
Domain Name Slot
IDNA-valid string
Internationalized Domain Name (IDN)
Internationalized Label
LDH Label
Non-Reserved LDH label (NR-LDH label)
U-label
Two additional terms entered the IETF's vocabulary as part of the
earlier IDN effort [<a href="./rfc3490" title=""Internationalizing Domain Names in Applications (IDNA)"">RFC3490</a>] (IDNA2003):
Stringprep
Stringprep [<a href="./rfc3454" title=""Preparation of Internationalized Strings ("">RFC3454</a>] provides a model and character tables for
preparing and handling internationalized strings. It was used
in the original IDN specification (IDNA2003) via a profile
called "Nameprep" [<a href="./rfc3491" title=""Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)"">RFC3491</a>]. It is no longer in use in IDNA,
but continues to be used in profiles by a number of other
protocols. <<a href="./rfc6365">RFC6365</a>>
Punycode
This is the name of the algorithm [<a href="./rfc3492" title=""Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)"">RFC3492</a>] used to convert
otherwise-valid IDN labels from native-character strings
expressed in Unicode to an ASCII-compatible encoding (ACE).
Strictly speaking, the term applies to the algorithm only. In
practice, it is widely, if erroneously, used to refer to
strings that the algorithm encodes.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 31]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-32" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<span class="h3"><a class="selflink" id="section-7.2" href="#section-7.2">7.2</a>. Character Relationships and Variants</span>
The term "variant" was introduced into the IETF i18n vocabulary with
the JET recommendations [<a href="./rfc3743" title=""Joint Engineering Team (JET) Guidelines for Internationalized Domain Names (IDN) Registration and Administration for Chinese, Japanese, and Korean"">RFC3743</a>]. As used there, it referred
strictly to the relationship between Traditional Chinese characters
and their Simplified equivalents. The JET recommendations provided a
model for identifying these pairs of characters and labels that used
them. Specific recommendations for variant handling for the Chinese
language were provided in a follow-up document [<a href="./rfc4713" title=""Registration and Administration Recommendations for Chinese Domain Names"">RFC4713</a>].
In more recent years, the term has also been used to describe other
collections of characters or strings that might be perceived as
equivalent. Those collections have involved one or more of several
categories of characters and labels containing them including:
o "visually similar" or "visually confusable" characters. These may
be limited to characters in different scripts, characters in a
single script, or both, and may be those that can appear to be
alike even when high-distinguishability reference fonts are used
or under various circumstances that may involve malicious choices
of typefaces or other ways to trick user perception. Trivial
examples include ASCII "l" and "1" and Latin and Cyrillic "a".
o Characters assigned more than one Unicode code point because of
some special property. These characters may be considered "the
same" for some purposes and different for others (or by other
users). One of the most commonly cited examples is the Arabic
YEH, which is encoded more than once because some of its shapes
are different across different languages. Another example are the
Greek lowercase sigma and final sigma: if the latter were viewed
purely as a positional presentation variation on the former, it
should not have been assigned a separate code point.
o Numerals and labels including them. Unlike letters, the "meaning"
of decimal digits is clear and unambiguous regardless of the
script with which they are associated. Some scripts are routinely
used almost interchangeably with European digits and digits native
to that script. The Arabic script has two sets of digits
(U+0660..U+0669 and U+06F0..U=06F9), written identically for zero
through three and seven through nine but differently for four
through six; European digits predominate in other areas.
Substitution of digits with the same numeric value in labels may
give rise to another type of variant.
o Orthographic differences within a language. Many languages have
alternate choices of spellings or spellings that differ by locale.
Users of those languages generally recognize the spellings as
equivalent, at least as much so as the variations described above.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 32]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-33" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
Examples include "color" and "colour" in English, German words
spelled with o-umlaut or "oe", and so on. Some of these
relationships may also create other types of language-specific
perceived differences that do not exist for other languages using
the same script. For example, in Arabic language usage at the end
of words, ARABIC LETTER TEH MARBUTA (U+0629) and ARABIC LETTER HEH
(U+0647) are differently shaped (one has 2 dots in top of it), but
they are used interchangeably in writing: they "sound" similar
when pronounced at the end of phrase, and hence the LETTER TEH
MARBUTA sometimes is written as LETTER HEH and the two are
considered "confusable" in that context.
The term "variant" as used in this section should also not be
confused with other uses of the term in this document or in Unicode
terminology (e.g., those in <a href="#section-4.1">Section 4.1</a> above). If the term is to be
used at all, context should clearly distinguish among these different
uses and, in particular, between variant characters and variant
labels. Local text should identify which meaning, or combination of
meanings, are intended.
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. Other Common Terms in Internationalization</span>
This is a hodge-podge of other terms that have appeared in
internationalization discussions in the IETF.
locale
Locale is the user-specific location and cultural information
managed by a computer. <<a href="./rfc6365">RFC6365</a>>
Because languages and orthographic conventions differ from country
to country (and even region to region within a country), the
locale of the user can often be an important factor. Typically,
the locale information for a user includes the language(s) used.
Locale issues go beyond character use, and can include things such
as the display format for currency, dates, and times. Some
locales (especially the popular "C" and "POSIX" locales) do not
include language information.
It should be noted that there are many thorny, unsolved issues
with locale. For example, should text be viewed using the locale
information of the person who wrote the text, information that
would apply to the location of the system storing or providing the
text, or the person viewing it? What if the person viewing it is
traveling to different locations? Should only some of the locale
information affect creation and editing of text?
<span class="grey">Hoffman & Klensin Best Current Practice [Page 33]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-34" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
Latin characters
"Latin characters" is a not-precise term for characters
historically related to ancient Greek script as modified in the
Roman Republic and Empire and currently used throughout the world.
<<a href="./rfc6365">RFC6365</a>>
The base Latin characters are a subset of the ASCII repertoire and
have been augmented by many single and multiple diacritics and
quite a few other characters. ISO/IEC 10646 encodes the Latin
characters in including ranges U+0020..U+024F and U+1E00..U+1EFF.
Because "Latin characters" is used in different contexts to refer
to the letters from the ASCII repertoire, the subset of those
characters used late in the Roman Republic period, or the
different subset used to write Latin in medieval times, the entire
ASCII repertoire, all of the code points in the extended Latin
script as defined by Unicode, and other collections, the term
should be avoided in IETF specifications when possible.
Similarly, "Basic Latin" should not be used as a synonym for
"ASCII".
romanization
The transliteration of a non-Latin script into Latin characters.
<<a href="./rfc6365">RFC6365</a>>
Because of their widespread use, Latin characters (or graphemes
constructed from them) are often used to try to write text in
languages that didn't previously have writing systems or whose
writing systems were originally based on different scripts. For
example, there are two popular romanizations of Chinese: Wade-
Giles and Pinyin, the latter of which is by far more common today.
Many romanization systems are inexact and do not give perfect
round-trip mappings between the native script and the Latin
characters.
CJK characters and Han characters
The ideographic characters used in Chinese, Japanese, Korean, and
traditional Vietnamese writing systems are often called "CJK
characters" after the initial letters of the language names in
English. They are also called "Han characters", after the term in
Chinese that is often used for these characters. <<a href="./rfc6365">RFC6365</a>>
<span class="grey">Hoffman & Klensin Best Current Practice [Page 34]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-35" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
Note that Han characters do not include the phonetic characters
used in the Japanese and Korean languages. Users of the term "CJK
characters" may or may not assume those additional characters are
included.
In ISO/IEC 10646, the Han characters were "unified", meaning that
each set of Han characters from Japanese, Chinese, and/or Korean
that had the same origin was assigned a single code point. The
positive result of this was that many fewer code points were
needed to represent Han; the negative result of this was that
characters that people who write the three languages think are
different have the same code point. There is a great deal of
disagreement on the nature, the origin, and the severity of the
problems caused by Han unification.
translation
The process of conveying the meaning of some passage of text in
one language, so that it can be expressed equivalently in another
language. <<a href="./rfc6365">RFC6365</a>>
Many language translation systems are inexact and cannot be
applied repeatedly to go from one language to another to another.
transliteration
The process of representing the characters of an alphabetical or
syllabic system of writing by the characters of a conversion
alphabet. <<a href="./rfc6365">RFC6365</a>>
Many script transliterations are exact, and many have perfect
round-trip mappings. The notable exception to this is
romanization, described above. Transliteration involves
converting text expressed in one script into another script,
generally on a letter-by-letter basis. There are many official
and unofficial transliteration standards, most notably those from
ISO TC 46 and the U.S. Library of Congress.
transcription
The process of systematically writing the sounds of some passage
of spoken language, generally with the use of a technical phonetic
alphabet (usually Latin-based) or other systematic transcriptional
orthography. Transcription also sometimes refers to the
conversion of written text into a transcribed form, based on the
sound of the text as if it had been spoken. <<a href="./rfc6365">RFC6365</a>>
<span class="grey">Hoffman & Klensin Best Current Practice [Page 35]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-36" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
Unlike transliterations, which are generally designed to be round-
trip convertible, transcriptions of written material are almost
never round-trip convertible to their original form, at least
without some supplemental information.
regular expressions
Regular expressions provide a mechanism to select specific strings
from a set of character strings. Regular expressions are a
language used to search for text within strings, and possibly
modify the text found with other text. <<a href="./rfc6365">RFC6365</a>>
Pattern matching for text involves being able to represent one or
more code points in an abstract notation, such as searching for
all capital Latin letters or all punctuation. The most common
mechanism in IETF protocols for naming such patterns is the use of
regular expressions. There is no single regular expression
language, but there are numerous very similar dialects that are
not quite consistent with each other.
The Unicode Consortium has a good discussion about how to adapt
regular expression engines to use Unicode. [<a href="#ref-UTR18" title=""Unicode Standard Annex #18: Unicode Regular Expressions"">UTR18</a>]
private use character
ISO/IEC 10646 code points from U+E000 to U+F8FF, U+F0000 to
U+FFFFD, and U+100000 to U+10FFFD are available for private use.
This refers to code points of the standard whose interpretation is
not specified by the standard and whose use may be determined by
private agreement among cooperating users. <UNICODE>
The use of these "private use" characters is defined by the
parties who transmit and receive them, and is thus not appropriate
for standardization. (The IETF has a long history of private use
names for things such as "x-" names in MIME types, charsets, and
languages. Most of the experience with these has been quite
negative, with many implementors assuming that private use names
are in fact public and long-lived.)
<span class="h2"><a class="selflink" id="section-9" href="#section-9">9</a>. Security Considerations</span>
Security is not discussed directly in this document. While the
definitions here have no direct effect on security, they are used in
many security contexts. For example, authentication usually involves
comparing two tokens, and one or both of those tokens might be text;
thus, some methods of comparison might involve using some of the
internationalization concepts for which terms are defined in this
document.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 36]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-37" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
Having said that, other RFCs dealing with internationalization have
security consideration descriptions that may be useful to the reader
of this document. In particular, the security considerations in <a href="./rfc3454">RFC</a>
<a href="./rfc3454">3454</a>, <a href="./rfc3629">RFC 3629</a>, <a href="./rfc4013">RFC 4013</a> [<a href="./rfc4013" title=""SASLprep: Stringprep Profile for User Names and Passwords"">RFC4013</a>], and <a href="./rfc5890">RFC 5890</a> go into a fair
amount of detail.
<span class="h2"><a class="selflink" id="section-10" href="#section-10">10</a>. References</span>
<span class="h3"><a class="selflink" id="section-10.1" href="#section-10.1">10.1</a>. Normative References</span>
[<a id="ref-ISOIEC10646">ISOIEC10646</a>] ISO/IEC, "ISO/IEC 10646:2011. International Standard
-- Information technology - Universal Multiple-Octet
Coded Character Set (UCS)", 2011.
[<a id="ref-RFC2047">RFC2047</a>] Moore, K., "MIME (Multipurpose Internet Mail
Extensions) Part Three: Message Header Extensions for
Non-ASCII Text", <a href="./rfc2047">RFC 2047</a>, November 1996.
[<a id="ref-UNICODE">UNICODE</a>] The Unicode Consortium, "The Unicode Standard,
Version 6.0", (Mountain View, CA: The Unicode
Consortium, 2011. ISBN 978-1-936213-01-6).
<<a href="http://www.unicode.org/versions/Unicode6.0.0/">http://www.unicode.org/versions/Unicode6.0.0/</a>>.
<span class="h3"><a class="selflink" id="section-10.2" href="#section-10.2">10.2</a>. Informative References</span>
[<a id="ref-CHARMOD">CHARMOD</a>] W3C, "Character Model for the World Wide Web 1.0",
2005, <<a href="http://www.w3.org/TR/charmod/">http://www.w3.org/TR/charmod/</a>>.
[<a id="ref-FRAMEWORK">FRAMEWORK</a>] ISO/IEC, "ISO/IEC TR 11017:1997(E). Information
technology - Framework for internationalization,
prepared by ISO/IEC JTC 1/SC 22/WG 20", 1997.
[<a id="ref-ISO3166">ISO3166</a>] ISO, "ISO 3166-1:2006 - Codes for the representation
of names of countries and their subdivisions -- Part
1: Country codes", 2006.
[<a id="ref-ISO639">ISO639</a>] ISO, "ISO 639-1:2002 - Code for the representation of
names of languages - Part 1: Alpha-2 code", 2002.
[<a id="ref-ISO6429">ISO6429</a>] ISO/IEC, "ISO/IEC, "ISO/IEC 6429:1992. Information
technology -- Control functions for coded character
sets"", ISO/IEC 6429:1992, 1992.
[<a id="ref-RFC0952">RFC0952</a>] Harrenstien, K., Stahl, M., and E. Feinler, "DoD
Internet host table specification", <a href="./rfc952">RFC 952</a>,
October 1985.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 37]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-38" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
[<a id="ref-RFC1034">RFC1034</a>] Mockapetris, P., "Domain names - concepts and
facilities", STD 13, <a href="./rfc1034">RFC 1034</a>, November 1987.
[<a id="ref-RFC1123">RFC1123</a>] Braden, R., "Requirements for Internet Hosts -
Application and Support", STD 3, <a href="./rfc1123">RFC 1123</a>,
October 1989.
[<a id="ref-RFC2045">RFC2045</a>] Freed, N. and N. Borenstein, "Multipurpose Internet
Mail Extensions (MIME) Part One: Format of Internet
Message Bodies", <a href="./rfc2045">RFC 2045</a>, November 1996.
[<a id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
[<a id="ref-RFC2277">RFC2277</a>] Alvestrand, H., "IETF Policy on Character Sets and
Languages", <a href="https://www.rfc-editor.org/bcp/bcp18">BCP 18</a>, <a href="./rfc2277">RFC 2277</a>, January 1998.
[<a id="ref-RFC2781">RFC2781</a>] Hoffman, P. and F. Yergeau, "UTF-16, an encoding of
ISO 10646", <a href="./rfc2781">RFC 2781</a>, February 2000.
[<a id="ref-RFC2978">RFC2978</a>] Freed, N. and J. Postel, "IANA Charset Registration
Procedures", <a href="https://www.rfc-editor.org/bcp/bcp19">BCP 19</a>, <a href="./rfc2978">RFC 2978</a>, October 2000.
[<a id="ref-RFC3454">RFC3454</a>] Hoffman, P. and M. Blanchet, "Preparation of
Internationalized Strings ("stringprep")", <a href="./rfc3454">RFC 3454</a>,
December 2002.
[<a id="ref-RFC3490">RFC3490</a>] Faltstrom, P., Hoffman, P., and A. Costello,
"Internationalizing Domain Names in Applications
(IDNA)", <a href="./rfc3490">RFC 3490</a>, March 2003.
[<a id="ref-RFC3491">RFC3491</a>] Hoffman, P. and M. Blanchet, "Nameprep: A Stringprep
Profile for Internationalized Domain Names (IDN)",
<a href="./rfc3491">RFC 3491</a>, March 2003.
[<a id="ref-RFC3492">RFC3492</a>] Costello, A., "Punycode: A Bootstring encoding of
Unicode for Internationalized Domain Names in
Applications (IDNA)", <a href="./rfc3492">RFC 3492</a>, March 2003.
[<a id="ref-RFC3629">RFC3629</a>] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, <a href="./rfc3629">RFC 3629</a>, November 2003.
[<a id="ref-RFC3743">RFC3743</a>] Konishi, K., Huang, K., Qian, H., and Y. Ko, "Joint
Engineering Team (JET) Guidelines for
Internationalized Domain Names (IDN) Registration and
Administration for Chinese, Japanese, and Korean",
<a href="./rfc3743">RFC 3743</a>, April 2004.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 38]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-39" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
[<a id="ref-RFC4013">RFC4013</a>] Zeilenga, K., "SASLprep: Stringprep Profile for User
Names and Passwords", <a href="./rfc4013">RFC 4013</a>, February 2005.
[<a id="ref-RFC4647">RFC4647</a>] Phillips, A. and M. Davis, "Matching of Language
Tags", <a href="https://www.rfc-editor.org/bcp/bcp47">BCP 47</a>, <a href="./rfc4647">RFC 4647</a>, September 2006.
[<a id="ref-RFC4713">RFC4713</a>] Lee, X., Mao, W., Chen, E., Hsu, N., and J. Klensin,
"Registration and Administration Recommendations for
Chinese Domain Names", <a href="./rfc4713">RFC 4713</a>, October 2006.
[<a id="ref-RFC5137">RFC5137</a>] Klensin, J., "ASCII Escaping of Unicode Characters",
<a href="https://www.rfc-editor.org/bcp/bcp137">BCP 137</a>, <a href="./rfc5137">RFC 5137</a>, February 2008.
[<a id="ref-RFC5198">RFC5198</a>] Klensin, J. and M. Padlipsky, "Unicode Format for
Network Interchange", <a href="./rfc5198">RFC 5198</a>, March 2008.
[<a id="ref-RFC5322">RFC5322</a>] Resnick, P., Ed., "Internet Message Format",
<a href="./rfc5322">RFC 5322</a>, October 2008.
[<a id="ref-RFC5646">RFC5646</a>] Phillips, A. and M. Davis, "Tags for Identifying
Languages", <a href="https://www.rfc-editor.org/bcp/bcp47">BCP 47</a>, <a href="./rfc5646">RFC 5646</a>, September 2009.
[<a id="ref-RFC5890">RFC5890</a>] Klensin, J., "Internationalized Domain Names for
Applications (IDNA): Definitions and Document
Framework", <a href="./rfc5890">RFC 5890</a>, August 2010.
[<a id="ref-RFC5892">RFC5892</a>] Faltstrom, P., "The Unicode Code Points and
Internationalized Domain Names for Applications
(IDNA)", <a href="./rfc5892">RFC 5892</a>, August 2010.
[<a id="ref-RFC5895">RFC5895</a>] Resnick, P. and P. Hoffman, "Mapping Characters for
Internationalized Domain Names in Applications (IDNA)
2008", <a href="./rfc5895">RFC 5895</a>, September 2010.
[<a id="ref-RFC6055">RFC6055</a>] Thaler, D., Klensin, J., and S. Cheshire, "IAB
Thoughts on Encodings for Internationalized Domain
Names", <a href="./rfc6055">RFC 6055</a>, February 2011.
[<a id="ref-UAX34">UAX34</a>] The Unicode Consortium, "Unicode Standard Annex #34:
Unicode Named Character Sequences", 2010,
<<a href="http://www.unicode.org/reports/tr34">http://www.unicode.org/reports/tr34</a>>.
[<a id="ref-UAX9">UAX9</a>] The Unicode Consortium, "Unicode Standard Annex #9:
Unicode Bidirectional Algorithm", 2010,
<<a href="http://www.unicode.org/reports/tr9">http://www.unicode.org/reports/tr9</a>>.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 39]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-40" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
[<a id="ref-US-ASCII">US-ASCII</a>] ANSI, "Coded Character Set -- 7-bit American Standard
Code for Information Interchange, ANSI X3.4-1986",
1986.
[<a id="ref-UTN6">UTN6</a>] The Unicode Consortium, "Unicode Technical Note #5:
BOCU-1: MIME-Compatible Unicode Compression", 2006,
<<a href="http://www.unicode.org/notes/tn6/">http://www.unicode.org/notes/tn6/</a>>.
[<a id="ref-UTR15">UTR15</a>] The Unicode Consortium, "Unicode Standard Annex #15:
Unicode Normalization Forms", 2010,
<<a href="http://www.unicode.org/reports/tr15">http://www.unicode.org/reports/tr15</a>>.
[<a id="ref-UTR18">UTR18</a>] The Unicode Consortium, "Unicode Standard Annex #18:
Unicode Regular Expressions", 2008,
<<a href="http://www.unicode.org/reports/tr18">http://www.unicode.org/reports/tr18</a>>.
[<a id="ref-UTR22">UTR22</a>] The Unicode Consortium, "Unicode Technical Standard
#22: Unicode Character Mapping Markup Language",
2009, <<a href="http://www.unicode.org/reports/tr22">http://www.unicode.org/reports/tr22</a>>.
[<a id="ref-UTR6">UTR6</a>] The Unicode Consortium, "Unicode Technical Standard
#6: A Standard Compression Scheme for Unicode", 2005,
<<a href="http://www.unicode.org/reports/tr6">http://www.unicode.org/reports/tr6</a>>.
[<a id="ref-W3C-i18n-Def">W3C-i18n-Def</a>] W3C, "Localization vs. Internationalization",
September 2010, <<a href="http://www.w3.org/International/questions/qa-i18n.en">http://www.w3.org/International/</a>
<a href="http://www.w3.org/International/questions/qa-i18n.en">questions/qa-i18n.en</a>>.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 40]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-41" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<span class="h2"><a class="selflink" id="appendix-A" href="#appendix-A">Appendix A</a>. Additional Interesting Reading</span>
Barry, Randall, ed. ALA-LC Romanization Tables. Washington: U.S.
Library of Congress, 1997. ISBN 0844409405
Coulmas, Florian. Blackwell Encyclopedia of Writing Systems.
Oxford: Blackwell Publishers, 1999. ISBN 063121481X
Dalby, Andrew. Dictionary of Languages: The Definitive Reference to
More than 400 Languages. New York: Columbia University Press, 2004.
ISBN 978-0231115698
Daniels, Peter, and William Bright. The World's Writing Systems.
New York: Oxford University Press, 1996. ISBN 0195079930
DeFrancis, John. The Chinese Language: Fact and Fantasy. Honolulu:
University of Hawaii Press, 1984. ISBN 0-8284-085505 and
0-8248-1058-6
Drucker, Joanna. The Alphabetic Labyrinth: The Letters in History
and Imagination. London: Thames & Hudson, 1995. ISBN 0-500-28068-1
Fazzioli, Edoardo. Chinese Calligraphy. New York: Abbeville Press,
1986, 1987 (English translation). ISBN 0-89659-774-1
Hooker, J.T., et al. Reading the Past: Ancient Writing from
Cuneiform to the Alphabet. London: British Museum Press, 1990. ISBN
0-7141-8077-7
Lunde, Ken. CJKV Information Processing. Sebastopol, CA: O'Reilly &
Assoc., 1999. ISBN 1-56592-224-7
Nakanishi, Akira. Writing Systems of the World. Rutland, VT:
Charles E. Tuttle Company, 1980. ISBN 0804816549
Robinson, Andrew. The Story of Writing: Alphabets, Hieroglyphs, &
Pictograms. London: Thames & Hudson, 1995, 2000. ISBN 0-500-28156-4
Sacks, David. Language Visible. New York: Broadway Books (a
division of Random House, Inc.), 2003. ISBN 0-7679-1172-5
<span class="grey">Hoffman & Klensin Best Current Practice [Page 41]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-42" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
<span class="h2"><a class="selflink" id="appendix-B" href="#appendix-B">Appendix B</a>. Acknowledgements</span>
The definitions in this document come from many sources, including a
wide variety of IETF documents.
James Seng contributed to the initial outline of <a href="./rfc3536">RFC 3536</a>. Harald
Alvestrand and Martin Duerst made extensive useful comments on early
versions. Others who contributed to the development of <a href="./rfc3536">RFC 3536</a>
include Dan Kohn, Jacob Palme, Johan van Wingen, Peter Constable,
Yuri Demchenko, Susan Harris, Zita Wenzel, John Klensin, Henning
Schulzrinne, Leslie Daigle, Markus Scherer, and Ken Whistler.
Abdulaziz Al-Zoman, Tim Bray, Frank Ellermann, Antonio Marko, JFC
Morphin, Sarmad Hussain, Mykyta Yevstifeyev, Ken Whistler, and others
identified important issues with, or made specific suggestions for,
this new version.
<span class="h2"><a class="selflink" id="appendix-C" href="#appendix-C">Appendix C</a>. Significant Changes from <a href="./rfc3536">RFC 3536</a></span>
This document mostly consists of additions to <a href="./rfc3536">RFC 3536</a>. The
following is a list of the most significant changes.
o Changed the document's status to BCP.
o Commonly used synonyms added to several descriptions and indexed.
o A list of terms defined and used in IDNA2008 was added, with a
pointer to <a href="./rfc5890">RFC 5890</a>. Those definitions have not been repeated in
this document.
o The much-abused term "variant" is now discussed in some detail.
o A discussion of different subsets of the Unicode repertoire was
added as <a href="#section-4.2">Section 4.2</a> and associated definitions were included.
o Added a new term, "writing style".
o Discussions of case-folding and mapping were expanded.
o Minor edits were made to some section titles and a number of other
editorial improvements were made.
o The discussion of control codes was updated to include additional
information and clarify that "control code" and "control
character" are synonyms.
o Many terms were clarified to reflect contemporary usage.
<span class="grey">Hoffman & Klensin Best Current Practice [Page 42]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-43" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
o The index to terms by section in <a href="./rfc3536">RFC 3536</a> was replaced by an index
to pages containing considerably more terms.
o The acknowledgments were updated.
o Some of the references were updated.
o The supplemental reading list was expanded somewhat.
Index
A
A-label 31
ACE 30, 31
ACE Prefix 31
alphabetic 20
ANSI 13
ASCII 15
ASCII-compatible encoding 30, 31
ASN.1 text formats 30
B
Base64 29
Basic Multilingual Plane 13
bidi 26
bidirectional display 26
BMP 13
BMPString 30
BOCU-1 14
BOM 14
byte order mark 14
C
C-T-E 29
case 18
CCS 7
CEN/ISSS 13
character 6
character encoding form 7
character encoding scheme 8
character repertoire 7
charset 8
charset identification 28
CJK characters 34
code chart 19
code point 16
code table 19
coded character 6
<span class="grey">Hoffman & Klensin Best Current Practice [Page 43]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-44" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
coded character set 7
collation 18
combining character 16
combining character sequence 16
compatibility character 22
compatibility variant 22
composite sequence 16
content-transfer-encoding 29
control character 21
control code 21
control sequence 22
D
decomposed character 16
diacritic 21
displaying and rendering text 10
Domain Name Slot 31
E
encoding forms 13
F
font 25
formatting character 22
G
glyph 7
glyph code 7
graphic symbol 25
H
Han characters 34
I
i18n 9
IA5String 30
ideographic 20
IDN 31
IDNA 31
IDNA-valid string 31
IDNA2003 31
IDNA2008 31
IME 24
input method editor 24
input methods 24
internationalization 8
Internationalized Domain Name 31
Internationalized Label 31
<span class="grey">Hoffman & Klensin Best Current Practice [Page 44]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-45" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
ISO 11
ISO 639 11
ISO 3166 11
ISO 8859 15
ISO TC 46 11
J
JIS 13
JTC 1 11
L
l10n 9
language 5
language identification 29
Latin characters 34
LDH Label 30
letters 23
Local and regional standards organizations 13
locale 33
localization 9
M
MIME 29
multilingual 10
N
name spaces 28
Nameprep 31
NFC 17
NFD 17
NFKC 17
NFKD 17
non-ASCII 23
nonspacing character 21
normalization 17
NR-LDH label 31
NVT 15
O
on-the-wire encoding 28
<span class="grey">Hoffman & Klensin Best Current Practice [Page 45]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-46" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
P
parsed text 28
precomposed character 16
PrintableString 30
private use charater 36
protocol elements 27
punctuation 21
Punycode 30, 31
Q
quoted-printable 29
R
regular expressions 36
rendering rules 24
repertoire 7
romanization 34
S
SAC 13
script 5
SCSU 14
sorting 18
Stringprep 31
surrogate pair 14
symbol 21
T
T61String 30
TeletexString 30
TES 29
transcoding 7
transcription 35
transfer encoding syntax 29
transformation formats 13
translation 35
transliteration 34, 35
typeface 25
U
U-label 31
UCS-2 13
UCS-4 13
undisplayable character 26
Unicode Consortium 12
US-ASCII 15
UTC 12
UTF-8 14
<span class="grey">Hoffman & Klensin Best Current Practice [Page 46]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-47" ></span>
<span class="grey"><a href="./rfc6365">RFC 6365</a> Internationalization Terminology September 2011</span>
UTF-16 14
UTF-16BE 14
UTF-16LE 14
UTF-32 14
UTF8String 30
V
variant 32
W
W3C 13
World Wide Web Consortium 13
writing style 27
writing system 6
X
XML 13, 30
Authors' Addresses
Paul Hoffman
VPN Consortium
EMail: paul.hoffman@vpnc.org
John C Klensin
1770 Massachusetts Ave, Ste 322
Cambridge, MA 02140
USA
Phone: +1 617 245 1457
EMail: john+ietf@jck.com
Hoffman & Klensin Best Current Practice [Page 47]
</pre>
|