|
Love Tex, but it's old. LyX would be the somewhat modern approach. Or Markup. Markup seems to be the new thing for html typsetting.
|
|
|
|
|
honey the codewitch wrote: all of this arcana that nobody cares about anymore because everyone just uses webkit.
Huh, wait a minute, who's using WebKit anymore? I know Apple still use it for their Safari browser, but Chrome (and the new Edge) uses the Chromium engine and given that Chrome is the most used browser, I'd be focusing more on Chrome!
That being said, I spent a while away working on REST APIs and microservices, and some legacy web applications which were put together by 10 year old scaffolding, so coming back to modern development and discovering that everything is now measured in ems and rems, that was a culture shock. Though I think it makes more sense, let's abolish the age of having to get pixel-perfect padding to prevent your whole page from collapsing like a Word document.
|
|
|
|
|
Every e-reader that I'm aware of (I'm not saying all of them mind you) uses webkit.
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
|
|
|
|
|
|
I would but it's kind of critical to what I'm doing right now, because how far I read through the document directly corresponds to what can fit on the screen vertically, and that depends on what fits horizontally.
I mean, I guess I can kind of punt this one case if that's what you mean, but it's one of those situations where not making a decision is itself making a decision.
Real programmers use butterflies
|
|
|
|
|
|
So you'd just split, like in the middle of the word, or at least, as far as the text goes on the screen and then wrap to the next line? I suppose that makes sense.
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.
--------------------
|
|
|
|
|
That seems very reasonable to me.
As a reader, frankly I could do without a hyphenation character being introduced.
As a developer, I'd see that and think to myself, "you know what - I couldn't have done better".
Win-win. I think you have your solution.
|
|
|
|
|
Clip it. That will punish content creators for using words like supercalifragilisticexpialidocious, and they will stop doing that.
|
|
|
|
|
See if you can find a lightweight dictionary that shows syllables so you can pick a syllable to hyphenate and wrap.
|
|
|
|
|
I just don't have the space for it, and I can't count on being online.
Real programmers use butterflies
|
|
|
|
|
honey the codewitch wrote: What would you do? I'd not wrap at all. Cost-wise the most efficient choice.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
So like, the edges of the word extend of the sides of the page? I'm not sure I can get away with that, since it's for an e-reader, although I wonder if they wouldn't put invisible unicode syllable breaks in long words. I wouldn't want want count on it. Hmmmm.
Real programmers use butterflies
|
|
|
|
|
Supercalifrag...
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
It's for a e-reader for reading books. I can't do that.
Real programmers use butterflies
|
|
|
|
|
Start a dictionary ... you already have a word. I have spelling tables with up to 70,000 entries; you can manage one word?
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
I don't have the space for a dictionary. I just don't. I'm sweating 30kB here 30kB there for my state tables, and then I have 250kB for my default fonts, which i actually have zipped, and then embedded the compressed result into my code as a C array.
But I don't have room left over for much.
Edit: I think I'm just going to hard wrap
Real programmers use butterflies
|
|
|
|
|
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.
|
|
|
|
|
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
|
|
|
|
|
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
|
|
|
|
|
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
|
|
|
|