word wrapping
-
Say I don't have room to wrap a single world like supercalifragilisticexpialidocious. In the real world, I'd just find a syllable and then hyphenate. I don't think I can do that - and i don't think i *should* do that in html and css. I don't know *what* to do. What would you do?
Real programmers use butterflies
Scrollbars! :laugh:
Latest Articles:
DivWindow: Size, drag, minimize, and maximize floating windows with layout persistence -
Quote:
Find me a library for this that works on the Arduino framework.
Maybe you should tell your client that the project they contracted you for is not completely realisable on their choice of hardware. Sure, you can get part of the way there on an atmega platform but it may not match their expectations. Or maybe get them to scale their requirements down to exclude extended unicode characters and exclude any sort of typesetting rules; just render text instead of typesetting it. Most (if not all) times my clients let me choose the hardware anyway (they set price restrictions and I tell them what is capable at that price) so it shouldn't really be a problem having this discussion with your client.
I could tell my client that but it's not true, and I wouldn't believe myself (I'm the client) anyway. I've got unicode, i'm working on the typesetting. It's not that the device isn't capable - I think I've written enough of the code to prove that the ESP32 can do it. It's just that I don't know the behaviors of all of it - not that I'm trying to implement all of it - just enough to show most epubs mostly correctly.
Real programmers use butterflies
-
Say I don't have room to wrap a single world like supercalifragilisticexpialidocious. In the real world, I'd just find a syllable and then hyphenate. I don't think I can do that - and i don't think i *should* do that in html and css. I don't know *what* to do. What would you do?
Real programmers use butterflies
How much (ROM,RAM) space do you have? Could a translation of a library like [this](https://github.com/mnater/Hyphenopoly) into C++ be of any use? The core hyphenation engine is 24kB of WASM, which would probably translate into a similar amount of assembly...
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
-
How much (ROM,RAM) space do you have? Could a translation of a library like [this](https://github.com/mnater/Hyphenopoly) into C++ be of any use? The core hyphenation engine is 24kB of WASM, which would probably translate into a similar amount of assembly...
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
I might be able to translate it, but 24kB is significant. I have about 300kB of usable general purpose RAM, 4MB of NVS flash, and *sometimes* 4MB of PSRAM Basically how I've orchestrated this it works in 300kB but works much faster if you have the PSRAM as well. The 4MB of NVS storage is divvied up between my code and a data partition I use to store unpacked EPUB content. I'm not sure offhand how much program space I have. The bad part of using more program space is it starts to make the dev cycle turnaround longer because you have to upload the code via serial uart.
Real programmers use butterflies
-
Say I don't have room to wrap a single world like supercalifragilisticexpialidocious. In the real world, I'd just find a syllable and then hyphenate. I don't think I can do that - and i don't think i *should* do that in html and css. I don't know *what* to do. What would you do?
Real programmers use butterflies
What's wrong w/ hyphenating at vowels? Software can figure out where the vowels are w/o a dictionary Best Wishes - Cheerio
-
What's wrong w/ hyphenating at vowels? Software can figure out where the vowels are w/o a dictionary Best Wishes - Cheerio
I mean, breaking bookkeeper on the first o seems kind of not good.
Real programmers use butterflies
-
I could tell my client that but it's not true, and I wouldn't believe myself (I'm the client) anyway. I've got unicode, i'm working on the typesetting. It's not that the device isn't capable - I think I've written enough of the code to prove that the ESP32 can do it. It's just that I don't know the behaviors of all of it - not that I'm trying to implement all of it - just enough to show most epubs mostly correctly.
Real programmers use butterflies
Quote:
I could tell my client that but it's not true,
You appaer to be in agreement with this statement of mine:
Quote:
Sure, you can get part of the way there on an atmega platform
So, yeah, that's completely true and factual - you can definitely get part of the way there! I'm guessing that the easiest bits can be done (inter-word spacing and hyphenation at syllable boundaries), but anything else you add in is going to result in a ragged right-edge. If you are okay with a ragged right edge, then it all becomes doable on an ESP32 (that's like what, 80KB RAM?)
-
I mean, breaking bookkeeper on the first o seems kind of not good.
Real programmers use butterflies
Why not break at the consonants then or simply rely on whatever the rule is for word wrapping w/ hyphenation I assume such a rule exist But in any case a dictionary is not needed - Cheerio
-
Say I don't have room to wrap a single world like supercalifragilisticexpialidocious. In the real world, I'd just find a syllable and then hyphenate. I don't think I can do that - and i don't think i *should* do that in html and css. I don't know *what* to do. What would you do?
Real programmers use butterflies
Look at the CSS options which cover a lot https://tippingpoint.dev/pure-css-truncate-text Seem like simple wrap would be good for an ereader just splitting the word at the last char on the line...no ellipses or such needed.
-
Disregard my pevious answer - that's for HTML only. If it's for an e-reader you have bigger problems: use a library to do this because there are multiple things involved in flowing text. If you've never used LaTeX you are probably not familiar with all the complexities involved: 1. Font kerning: changes the width of a line. 2. Inter-word spacing: algorithm must ensure no rivers run through paragraphs and edges line up. 3. Paragraph indentation: in literary prose all paragraphs have an indentation. 4. Long word wrapping: You need to use a table of pre-calculated breakpoints that are specific to a glyph. 5. Language: Some languages read right-to-left, and these may be in the middle of a sentence in a language which reads left-to-right. If you're implementing an E-reader then you need to know all of the following concepts: 1. Kerning 2. Ligatures 3. Unicode code-points 4. Unicode BMP 5. Unicode surrogates 6. Unicode characters 7. Unicode glyphs 8. Rivers/runs in text 9. Struts and rules in text 10. Baselines, Caplines 11. Ascenders, descenders 12. Subpixels ... and probably a hundred other typesetting things I forgot or don't know about. Flowing text for an E-reader (or PDF, or book or any typesetting) is an entire Phd topic on its own and can take years of work to implement. It does help if you've used LaTeX in the past, because it chooses good defaults for all of the above, and if you want to change anything you're forced to learn what all those things mean.
There is a pre baked library that covers many of these problems: http://site.icu-project.org/ Do not underestimate the weedy-ness of wrapping text. Check out some of the South Asian scripts. Thai, for example, has no spaces. Another strategy would be to scroll the too-long word. Think 1980's 16 character LED and LCD displays.
-
Find me a library for this that works on the Arduino framework. 1. Done 2. Not 3. Done 4. Not 5. Done 6. Done 7. Done (although i think you mean ttf/otf glyphs 8. Not 9. Not 10.Done 11.I don't know what that is 12. If you mean fractional pixels or anti-aliasing, done
Real programmers use butterflies
Honey, ascenders and descenders are letters like 't', 'l', 'h' that ascend above a standard 'a' type character and descenders are 'p', 'q', 'y' that descend below a standard 'a' type character.
-
Say I don't have room to wrap a single world like supercalifragilisticexpialidocious. In the real world, I'd just find a syllable and then hyphenate. I don't think I can do that - and i don't think i *should* do that in html and css. I don't know *what* to do. What would you do?
Real programmers use butterflies
Use a different word...
-
Honey, ascenders and descenders are letters like 't', 'l', 'h' that ascend above a standard 'a' type character and descenders are 'p', 'q', 'y' that descend below a standard 'a' type character.
Oh I thought it was going to be something weird. Yeah my stuff does that. It's basic truetype. you couldn't render fonts without it.
Real programmers use butterflies
-
Look at the CSS options which cover a lot https://tippingpoint.dev/pure-css-truncate-text Seem like simple wrap would be good for an ereader just splitting the word at the last char on the line...no ellipses or such needed.
That's what I'm hoping I can get away with. =)
Real programmers use butterflies
-
Oh I thought it was going to be something weird. Yeah my stuff does that. It's basic truetype. you couldn't render fonts without it.
Real programmers use butterflies
Jargon is always scary until you know what it means!
-
Quote:
I could tell my client that but it's not true,
You appaer to be in agreement with this statement of mine:
Quote:
Sure, you can get part of the way there on an atmega platform
So, yeah, that's completely true and factual - you can definitely get part of the way there! I'm guessing that the easiest bits can be done (inter-word spacing and hyphenation at syllable boundaries), but anything else you add in is going to result in a ragged right-edge. If you are okay with a ragged right edge, then it all becomes doable on an ESP32 (that's like what, 80KB RAM?)
Adding, you didn't mention an atmega before so I'm not sure what you're quoting. In any case I didn't agree or disagree with that statement because you didn't make it. This is what I responding to:
Maybe you should tell your client that the project they contracted you for is not completely realisable on their choice of hardware.
Real programmers use butterflies
-
--------------------
Well, I'd split on a
space if possible,
but that isn't
always possible,
particularly with
"supercalifragilisti
cexpialidocious",
which exceeds the
line length all on
its own. -
Say I don't have room to wrap a single world like supercalifragilisticexpialidocious. In the real world, I'd just find a syllable and then hyphenate. I don't think I can do that - and i don't think i *should* do that in html and css. I don't know *what* to do. What would you do?
Real programmers use butterflies
If me I'd question if this a complication that actually needs handling or just a programming challenge I want to figure out. Real world: what application this on, why would there not be enough screen space in current era. If was user input box on very narrow component, well the problem is flipped why user inputting into narrow viewed space, why cant space be increased. if label - again flip word. having it increase height of space might not be desirable, so leaves truncation "." "..." as an option. Put generically: figure out if this a problem that needs solving or if asking the wrong question.
-
If me I'd question if this a complication that actually needs handling or just a programming challenge I want to figure out. Real world: what application this on, why would there not be enough screen space in current era. If was user input box on very narrow component, well the problem is flipped why user inputting into narrow viewed space, why cant space be increased. if label - again flip word. having it increase height of space might not be desirable, so leaves truncation "." "..." as an option. Put generically: figure out if this a problem that needs solving or if asking the wrong question.
I mean that's fair, but here's the thing: I don't know the screen size and it may be as small as 300px across. It's an e-reader 300px is not practical for an e-reader, I know - but it's more about me not knowing the functional design specs of the hardware yet. I'm coding defensively in light of lack of solid specs yet. We simply can't know the specs yet, but it will probably be about 600px across like the nook but there may be a smaller version that's more pocketable if that's practical. Still, if they zoom in, or if the title (H1 tag) is long it could still be a problem.
Real programmers use butterflies
-
Adding, you didn't mention an atmega before so I'm not sure what you're quoting. In any case I didn't agree or disagree with that statement because you didn't make it. This is what I responding to:
Maybe you should tell your client that the project they contracted you for is not completely realisable on their choice of hardware.
Real programmers use butterflies
Quote:
Adding, you didn't mention an atmega before so I'm not sure what you're quoting.
I'm quoting this post over here, which as you can see contains the sentence you missed: The Lounge[^]
Quote:
This is what I responding to: Maybe you should tell your client that the project they contracted you for is not completely realisable on their choice of hardware.
Seems you're in agreement with that too, since you say:
Quote:
not that I'm trying to implement all of it - just enough to show most epubs mostly correctly.
That's what "not completely realisable" means.