This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
api:unicode [2014/07/07 12:24] vexatos created |
api:unicode [2015/06/11 22:23] (current) gamax92 Fix this finally, someone else can go make better documentation though. |
||
---|---|---|---|
Line 3: | Line 3: | ||
Because all strings pass through Java at some point it can be useful to handle them with Unicode support (since Java's internal string representation is UTF-8 encoded). In particular, screens display UTF-8 strings, meaning the related GPU functions expect UTF-8 strings. Also, keyboard input will generally be UTF-8 encoded, especially the clipboard. | Because all strings pass through Java at some point it can be useful to handle them with Unicode support (since Java's internal string representation is UTF-8 encoded). In particular, screens display UTF-8 strings, meaning the related GPU functions expect UTF-8 strings. Also, keyboard input will generally be UTF-8 encoded, especially the clipboard. | ||
- | However, keep in mind that only a subset of UTF-8 can actually be displayed on screens. Specifically all glyphs defined in [[http://en.wikipedia.org/wiki/Code_page_437|code page 437]] are supported. | + | However, keep in mind that while wide characters can be displayed, input and output of those is not fully supported in OpenOS's software (i.e. the shell, edit and Lua interpreter). |
The following functions are provided to allow basic UTF-8 handling: | The following functions are provided to allow basic UTF-8 handling: | ||
Line 9: | Line 9: | ||
- `unicode.char(value: number, ...): string` | - `unicode.char(value: number, ...): string` | ||
UTF-8 aware version of `string.char`. The values may be in the full UTF-8 range, not just ASCII. | UTF-8 aware version of `string.char`. The values may be in the full UTF-8 range, not just ASCII. | ||
+ | - `unicode.charWidth(value: string, ...): number` | ||
+ | Returns the width of the first character given. For example, for `シ` it'll return `2`, where `a` would return `1`. | ||
+ | - `unicode.isWide(value: string, ...): boolean` | ||
+ | Returns if the width of the first character given is greater than 1. For example, for `シ` it'll return `true`, where `a` would return `false`. | ||
- `unicode.len(value: string): number` | - `unicode.len(value: string): number` | ||
UTF-8 aware version of `string.len`. For example, for `Ümläüt` it'll return `6`, where `string.len` would return `9`. | UTF-8 aware version of `string.len`. For example, for `Ümläüt` it'll return `6`, where `string.len` would return `9`. | ||
Line 19: | Line 23: | ||
- `unicode.upper(value: string): string` | - `unicode.upper(value: string): string` | ||
UTF-8 aware version of `string.upper`. | UTF-8 aware version of `string.upper`. | ||
+ | - `unicode.wlen(value: string): number` | ||
+ | Returns the width of the entire string. | ||
+ | - `unicode.wtrunc(value: string, count: number): string` | ||
+ | Truncates the given string up to but not including `count` width. If there are not enough characters to match the wanted width, the function errors. | ||
For example, these are used when files are opened in non-binary mode. The original string functions are used for files opened in binary mode. | For example, these are used when files are opened in non-binary mode. The original string functions are used for files opened in binary mode. |