<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body><div class="auto-created-dir-div" dir="ltr" style="unicode-bidi: embed;"><style>p{margin:0}</style><div style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">Hi</div><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">Well, is the way to make progress that Unicode Inc. could make available a pseudo-code algorithm that can be converted to various programming languages that is such that the way that a digit is derived from the text characters is an algorithm with a structure of the form</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">if (digit_character >= 'A') AND (digit_character <= 'B') then digit_number := digit_character - 'C'</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">elsif (digit_character >= 'D') AND (digit_character <= 'E') then digit_number := digit_character - 'F'</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">elsif ...</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">.</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">.</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">.</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">elsif ...</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">end;</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">where A, B, C, D etc in the above are here each a placeholder for a Unicode character for the start and end of a range of digit characters as appropriate?</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">Would that do it? Assuming that compiler manufacturers used the algorithm, converted as appropriate! :-)</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">The algorithm written once and then updated as needed by Unicode Inc., then applicable throughout many programming languages.</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">Best regards,</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">William Overington</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">Wednesday 16 December 2020</p><p style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: OpenSans-webfont; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"><br style="box-sizing: border-box;"></p><br><br><blockquote style="margin: 0 auto; padding: 0 2em; border-left:2px solid #00ADE5; white-space: pre-wrap "><br><br>------ Original Message ------<br>From: "Roger L Costello via Unicode" <unicode@unicode.org><br>To: "unicode@unicode.org" <unicode@unicode.org><br>Sent: Wednesday, 2020 Dec 16 At 13:47<br>Subject: Unicode is universal, so how come that universality doesn’t apply to digits?<br><br> <div class="WordSection1"> <p class="MsoNormal">Hi Folks,</p> <p class="MsoNormal">Unicode make it possible to write things in different languages.</p> <p class="MsoNormal">For example, rather than this XML:</p> <p class="MsoNormal" style="text-indent: 0.5in;"><Number_Students>42</Number_Students></p> <p class="MsoNormal">a Bengali-speaking person can write this:</p> <p class="MsoNormal" style="text-indent: 0.5in;"><<span style='font-family: "Nirmala UI" , sans-serif;'>সংখ্যা</span>_<span style='font-family: "Nirmala UI" , sans-serif;'>ছাত্র</span>>42</<span style='font-family: "Nirmala UI" , sans-serif;'>সংখ্যা</span>_<span style='font-family: "Nirmala UI" , sans-serif;'>ছাত্র</span>></p> <p class="MsoNormal">Or, in a programming language, rather than this assignment statement:</p> <p class="MsoNormal">              Number_Students = 42</p> <p class="MsoNormal">a Bengali-speaking person can write this:</p> <p class="MsoNormal">              <span style='font-family: "Nirmala UI" , sans-serif;'> সংখ্যা</span>_<span style='font-family: "Nirmala UI" , sans-serif;'>ছাত্র</span> = 42</p> <p class="MsoNormal">That’s awesome.</p> <p class="MsoNormal">But, but, but, … how come that universality doesn’t extend to digits? </p> <p class="MsoNormal">How come we can only use these digits: 0 (hex 30), 1 (hex 31), …, 9 (hex 39)?</p> <p class="MsoNormal">Why, for example, can’t a Bengali-speaking person use the Bengali digits: Bengali digit 0 (U+09E6), Bengali digit 1 (U+09E7), …, Bengali digit 9 (U+09EF)?</p> <p class="MsoNormal">Why, for example, can’t a Bengali-speaking person create XML such as this:</p> <p class="MsoNormal" style="text-indent: 0.5in;"><<span style='font-family: "Nirmala UI" , sans-serif;'>সংখ্যা</span>_<span style='font-family: "Nirmala UI" , sans-serif;'>ছাত্র</span>><strong><span style='font-size: 13.5pt;line-height: 106.0%;font-family: "Nirmala UI" , sans-serif;color: black;background: white;'>৪</span></strong><strong><span style='font-family: "Nirmala UI" , sans-serif;'>୨</span></strong></<span style='font-family: "Nirmala UI" , sans-serif;'>সংখ্যা</span>_<span style='font-family: "Nirmala UI" , sans-serif;'>ছাত্র</span>></p> <p class="MsoNormal">or write a program assignment statement like this:</p> <p class="MsoNormal">              <span style='font-family: "Nirmala UI" , sans-serif;'> সংখ্যা</span>_<span style='font-family: "Nirmala UI" , sans-serif;'>ছাত্র</span> = <strong> <span style='font-size: 13.5pt;line-height: 106.0%;font-family: "Nirmala UI" , sans-serif;color: black;background: white;'>৪</span></strong><strong><span style='font-family: "Nirmala UI" , sans-serif;'>୨</span></strong><strong><span style="font-family: Calibri , sans-serif;"></span></strong></p> <p class="MsoNormal">Let me explain why I assert that the Bengali-speaking person “cannot” do that. </p> <p class="MsoNormal">Numbers in an XML document or in a program are just strings and, to perform arithmetic operations on them, those string numbers must be converted to actual numbers. I looked at the source code for the C function (strtol) that converts strings  to numbers and here is the key to how it converts a character digit to a number digit:</p> <p class="MsoNormal">              digit_number = digit_character - '0’</p> <p class="MsoNormal">Yikes!</p> <p class="MsoNormal">That generates a number digit by treating the character digit as a number and subtracting the number corresponding to the character ‘0’. For example, if the character digit is ‘4’ (hex 34) then when we subtract ‘0’ (hex 30) we get the number  4. Perfect! But ……… only if we allow European digits (0, 1, …, 9). Clearly, if we were to subtract ‘0’ (hex 30) from the Bengali digit 4 we do not get the number 4.</p> <p class="MsoNormal">Thus I conclude:</p> <ul style="margin-top: 0.0in;"><li class="MsoListParagraphCxSpFirst" style="margin-left: 0.0in;"> When expressing numbers, the only digits that can be used are the European digits</li><li class="MsoListParagraphCxSpLast" style="margin-left: 0.0in;"> Unicode is universal, but that universality does not apply to digits or numbers</li></ul> <p class="MsoNormal">Obviously I am not understanding something correctly. Please help me to understand.</p> <p class="MsoNormal">/Roger</p> <p class="MsoNormal"> </p> </div>   </blockquote></div></body></html>