HN user

be5invis

491 karma
Posts14
Comments109
View on HN

The story about line wrapping is mainly that, you:

  · Break the text into runs.
  · Calculate BiDi at paragraph level.
  · Shape every run to get its length and possible line breaking points.
  · Arrange the runs (now only have length, height, text isnide it and some breaking properties — glyphs and glyph positions are dropped) into lines.
Such process is called “measuring”. And the real text display is delayed until a line become visible: you fetch out the text runs in the line and do the real display.

In most times (like appending text) you do not to do much recalculation.

Let me count all the features that a proper rich text box should support:

  · Input methods, including...  
    · Composing IME  
    · Speech  
    · Handwriting  
    · Emoji picker  
  · Complex text rendering, including...  
    · Bidi  
    · Shaping  
    · Complex-script-aware editing  
    · Complex-script-aware find, replace, etc.  
  · Accessibility
And what they can choose to support:
  · Advanced typography, including...  
    · About line breaking...  
      · Hyphenation  
      · Optimized line break (Knuth-plass, etc.)  
    · About microtypography  
      · OpenType features (ligatures, etc.)  
      · OpenType variations  
      · Multiple master fonts  
      · Proper font fallback ← It is not a simple lookup-at-each-character process  
    · Advanced Middle East features, including...  
      · Kashida  
    · Advanced Far East features, including...  
      · Kinsoku Shori  
      · Auto space insertion  
      · Kumimoji  
      · Warichu  
      · Ruby  
    · Proper vertical layout, including...  
      · Yoko-in-Tate  
  · Inline objects and paragraph-like objects, including...  
    · Images  
    · Hyperlinks  
    · Math equations ← This is really hard.

I don't see any references to things like HarfBuzz or DWRITE, which are NECESSARY to properly display any scripts that's not European. All properly implemented text editors are rich text — because you will need to support font fallback and BiDi and all the Unicode complexity

You say you have dependent types

OK, could you define this?

    data Eq : {a : Type} -> a -> a -> Type where
        Refl : Eq x x

    sym : {x : a} -> {y : a} -> Eq x y -> Eq y x
    sym Refl = Refl

    replace : {a : Type} -> {x : a} -> {y : a} -> {f : a -> Type} -> Eq x y -> f x -> f y
    replace Refl p = p

Iosevka does not have `fi` ligature. The "Term" variant is used for some restricted environments, like some Linux would think that Iosevka is not monospace due to it has glyphs wider than one space.

First you have to remember that China itself's population is as large as the entire western world, so things are completely different here. For example, almost nobody in China use credit card for online payment: they use Alipay as an alternative.

1. Perhaps high salary? Non-local employees are rare here.

2. No in tech companies, but yes in small cities and countries. In tech companies and cities like Shanghai, forigners are treated better than locals, seriously.

3. Easier than getting a work in US.

4. Don't send a clock as a gift :)

Yes, you can assume, but existing applications, maybe written in 1990s even 1980s, won't. And there are millions of computers, maybe in important industrial companies, are still using them.