New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Graphical front-end (GUI-TUI Bridge) #571
Comments
This comment was marked as outdated.
This comment was marked as outdated.
You can play with a prototype of the vtm graphical window (gui-bridge branch) on various Windows platforms starting with Win8.1 (including Window Server 2019 Core). If vtm is launched from a graphical shell, or through the screen_record_Thu_04.18.2024__3-02-53.76.mp4The vtm server starts in the background, despite the fact that its interface is not yet rendered. |
This comment was marked as outdated.
This comment was marked as outdated.
Of course, along with the character matrix, support for both rotation (pi/2, pi, 3pi/2) and flip (hz/vt) is required. |
Let's try to play this way:
|
Another brick in the wall: Glyph run alignment (inside the matrix)
|
Terminal users always enter the terminal environment from a graphical environment. The initial interface is always graphical. Until now, we have relied entirely on third-party graphical terminal emulators which significantly limit the capabilities of console applications without providing any way to achieve the required functionality. The only way to overcome these bottlenecks is to create our own bridge from the graphical to the terminal environment.
Our own graphical front-end will open up ways for us to solve the following issues:
Character Matrix
Each character is a sequence of codepoints (one or more) - this is the so-called grapheme cluster. Using a font, this sequence is translated into a glyph run. The final scaling and rasterization of the glyph run is done into a rectangular matrix of terminal cells, defined either implicitly based on the Unicode properties of the cluster codepoints, or explicitly using a modifier codepoint from the Unicode codepoint range 0xD0000-0xD02A2, the value of which is encoded by the enumeration of “wh_xy” values:
Users can explicitly specify the size of the character matrix (by zeroing
_xy
) or select any fragment (non-zero_xy
) of it placing a modifier character from the Unicode codepoint range 0xD0000-0xD02A2 right after the base character (or at the end of the grapheme cluster).For character matrices larger than 8x4, pixel graphics should be used.
Grapheme Cluster Boundaries
By default, grapheme clustering occurs according to
Unicode UAX #29
https://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules.To set arbitrary boundaries, the C0 control character
ASCII 0x02 STX
is used, signaling the beginning of a grapheme cluster. The closing character of a grapheme cluster is always a codepoint from the range 0xD0000-0xDFFFF, which sets the dimension of the character matrix. All codepoints between STX and the closing codepoint that sets the matrix size will be included in the grapheme cluster.Another brick in the wall
So, let's try to play this way:
Glyph run alignment (inside the matrix)
Glyph run rotation (inside the matrix)
The text was updated successfully, but these errors were encountered: