raphamorim / rio

A hardware-accelerated GPU terminal emulator focusing to run in desktops and browsers.
https://raphamorim.io/rio
MIT License
3.47k stars 108 forks source link

Issues with double-width chars #355

Closed svvac closed 3 months ago

svvac commented 9 months ago

(found #228 and #238 that look related-ish but havent seen these specific problems reported)

When the first glyph on a line is a double-width glyph, the whole line is displayed scaled down :

$ printf "✖ 1 problem\n ✖ 1 problem\n"
✖ 1 problem
 ✖ 1 problem

Executing the printf above yields :

image

Additionally :

raphamorim commented 9 months ago

Hey @svvac thanks for the issue,

I cannot reproduce the first part, but I assume is a font issue (not your font but Rio isn't dealing well with it).

Screenshot 2023-11-28 at 12 13 06

The second problem, I can reproduce.

Screenshot 2023-11-28 at 12 13 43

svvac commented 9 months ago

For repro, the font is a patched Iosevka from nerd fonts.

Brianalmeida commented 8 months ago

@svvac would mind sharing more information on your environment?

Tried to reproduce this with the given font above, and it seems to be working normally for me. I am using SLES 15 SP6, and rio version 0.0.34 with the Iosevka font

svvac commented 8 months ago
$ rio --version
rioterm 0.0.33
$ uname -a
Linux thehost 6.6.9-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 02 Jan 2024 02:28:28 +0000 x86_64 GNU/Linux
~/.config/rio/config.toml ```toml # Cursor # # Default cursor is Block # Other available options are: '_' and '|' # cursor = '▇' # Blinking Cursor # # Default is false # blinking-cursor = false # Scroll Speed Multiplier # # You can change how many lines are scrolled each time by setting this option. # Defaul is 3.0. # Example: # scroll-multiplier = 3.0 # Ignore theme selection foreground color # # Default is false # # Example: # ignore-selection-foreground-color = false # Enable Kitty Keyboard protocol # # Default is false # # Example: # use-kitty-keyboard-protocol = false # Performance # # Set WGPU rendering performance # High: Adapter that has the highest performance. This is often a discrete GPU. # Low: Adapter that uses the least possible power. This is often an integrated GPU. # performance = "High" # Theme # # It makes Rio look for the specified theme in the themes folder # (macos and linux: ~/.config/rio/themes/dracula.toml) # (windows: C:\Users\USER\AppData\Local\rio\themes\dracula.toml) # # Example: # theme = "dracula" # Padding-x # # define x axis padding (default is 10) # # Example: # padding-x = 10 # Option as Alt # # This config only works on MacOs. # Possible choices: 'both', 'left' and 'right'. # # Example: # option-as-alt = 'left' # Window configuration # # • width - define the intial window width. # Default: 600 # # • height - define the inital window height. # Default: 400 # # • mode - define how the window will be created # - "Windowed" (default) is based on width and height # - "Maximized" window is created with maximized # - "Fullscreen" window is created with fullscreen # # Example: # [window] # width = 600 # height = 400 # mode = "Windowed" [window] background-opacity = 0.95 # Background configuration # # • opacity - changes the background transparency state # Default: 1.0 # # • mode - defines background mode bewteen "Color" and "Image" # # • image - Set an image as background # Default: None # # Example: # [background] # mode = "Image" # opacity = 1.0 # # [background.image] # path = "/Users/rapha/Desktop/eastward.jpg" # width = 200.0 # height = 200.0 # x = 0.0 # y = 0.0 # Window Height # # window-height changes the inital window height. # Default: 400 # # Example: # window-height = 400 # Fonts # # Configure fonts used by the terminal # # Note: You can set different font families but Rio terminal # will always look for regular font bounds whene # # You can also set family on root to overwritte all fonts [fonts] family = "Iosevka Nerd Font" size = 14.4 # # You can also specify extra fonts to load # [fonts] # extras = [{ family = "Microsoft JhengHei" }] # # # Example: # [fonts] # size = 18 # # [fonts.regular] # family = "cascadiamono" # style = "normal" # weight = 400 # # [fonts.bold] # family = "cascadiamono" # style = "normal" # weight = 800 # # [fonts.italic] # family = "cascadiamono" # style = "italic" # weight = 400 # # [fonts.bold-italic] # family = "cascadiamono" # style = "italic" # weight = 800 # Navigation # # "mode" - Define navigation mode # • NativeTab (MacOs only) # • CollapsedTab # • BottomTab # • TopTab # • Breadcrumb # • Plain # # "clickable" - Enable click on tabs to switch. # "use-current-path" - Use same path whenever a new tab is created. # "color-automation" - Set a specific color for the tab whenever a specific program is running. # "macos-hide-window-buttons" - (MacOS only) Hide window buttons # # Example: # [navigation] # mode = "CollapsedTab" # clickable = false # use-current-path = false # color-automation = [] # macos-hide-window-buttons = false [navigation] mode = "Plain" # Shell # # You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`. # Entries in `shell.args` are passed unmodified as arguments to the shell. # # Default: # - (macOS) user login shell # - (Linux/BSD) user login shell # - (Windows) powershell # # Example 1 using fish shell from bin path: # # shell = { program = "/bin/fish", args = ["--login"] } # # Example 2 for Windows using powershell # # shell = { program = "pwsh", args = [] } # # Example 3 for Windows using powershell with login # # shell = { program = "pwsh", args = ["-l"] } # Startup directory # # Directory the shell is started in. If this is unset the working # directory of the parent process will be used. # # This configuration only has effect if use-fork is disabled # # Example: # working-dir = "/Users/raphael/Documents/" # Environment variables # # The example below sets fish as the default SHELL using env vars # please do not copy this if you do not need # # Example: # env-vars = [] # Disable render when unfocused # # This property disable renderer processes while Rio is unfocused. # # Example: # disable-renderer-when-unfocused = false # Use fork # # Defaults for POSIX-based systems (Windows is not configurable): # MacOS: spawn processes # Linux/BSD: fork processes # # Example: # use-fork = false # Colors # # Colors definition will overwrite any property in theme # (considering if theme folder does exists and is being used) # # Example: # [colors] # background = '#0F0D0E' # foreground = '#F9F4DA' # cursor = '#F38BA3' # tabs = '#443d40' # tabs-active = '#F38BA3' # green = '#0BA95B' # red = '#ED203D' # blue = '#12B5E5' # yellow = '#FCBA28' [colors] background = '#2e3440' foreground = '#d8dee9' black = '#3b4252' red = '#bf616a' green = '#a3be8c' yellow = '#ebcb8b' blue = '#81a1c1' magenta = '#b48ead' cyan = '#88c0d0' white = '#e5e9f0' light-black = '#4c566a' light-red = '#bf616a' light-green = '#a3be8c' light-yellow = '#ebcb8b' light-blue = '#81a1c1' light-magenta = '#b48ead' light-cyan = '#8fbcbb' light-white = '#eceff4' dim-black = '#373e4d' dim-red = '#94545d' dim-green = '#809575' dim-yellow = '#b29e75' dim-blue = '#68809a' dim-magenta = '#8c738c' dim-cyan = '#6d96a5' dim-white = '#aeb3bb' # Bindings # # Create custom Key bindings for Rio terminal # More information in: raphamorim.io/rio/docs/custom-key-bindings # # Example: # [bindings] # keys = [ # { key = "q", with = "super", action = "Quit" }, # # Bytes[27, 91, 53, 126] is equivalent to "\x1b[5~" # { key = "home", with = "super | shift", bytes = [27, 91, 53, 126] } # ] # Log level # # This property enables log level filter. Default is "OFF". # # Example: # [developer] # log-level = "OFF" ```

I'm on Arch if this matters. If you need more versions, please ask.

TornaxO7 commented 8 months ago

$ rio --version rioterm 0.0.33

you aren't using the latest version of rio. Try, updating your system or build from the main branch.

svvac commented 7 months ago

Well it was the latest at the time I filed this ticket.

Now it says rioterm 0.0.34 and the issue is still present.

raphamorim commented 3 months ago

This issue should not be able to reproduce with the latest release (v0.1.0), closing this issue for now. In case find anything odd please let me know and we can reopen or create a new issue.