Xteink-X4-crosspoint-reader/lib
Jake Kenneally cb4d86fec6
fix: prevent spurious spaces before attaching punctuation (#694)
Fixes issue #182

## Summary

**What is the goal of this PR?** 
When inline styles change mid-paragraph, words like periods, commas, and
quotes could end up as separate tokens. The justified text algorithm was
treating these as regular words, adding space before them.

**What changes are included?**

Now tracks which words are "attaching punctuation" (., , ! ? ; : " ' and
smart quotes) and excludes them from gap counting. These punctuation
marks attach directly to the preceding word without spacing.

## Additional Context

This is split out from code in #411 to address this comment
https://github.com/crosspoint-reader/crosspoint-reader/pull/411#discussion_r2751166631

---

### AI Usage

While CrossPoint doesn't have restrictions on AI tools in contributing,
please be transparent about their usage as it
helps set the right context for reviewers.

Did you use AI tools to help write this code? _**YES**_, Claude Code
2026-02-06 01:55:15 +11:00
..
EpdFont feat: Add CSS parsing and CSS support in EPUBs (#411) 2026-02-05 21:28:10 +11:00
Epub fix: prevent spurious spaces before attaching punctuation (#694) 2026-02-06 01:55:15 +11:00
expat Add expat and swap out EPUB HTML parser (#2) 2025-12-06 20:57:24 +11:00
FsHelpers Add exFAT support (#150) 2025-12-30 16:09:30 +11:00
GfxRenderer feat: Implement fix for sunlight fading issue (#603) 2026-02-05 23:32:05 +11:00
hal feat: Implement fix for sunlight fading issue (#603) 2026-02-05 23:32:05 +11:00
JpegToBmpConverter fix: Artifacts on Thumb on Home Screen (#662) 2026-02-05 22:45:56 +11:00
KOReaderSync feat: Calibre Web Automated (CWA) koreader sync server support (#594) 2026-02-05 23:10:08 +11:00
miniz Stream inflated EPUB HTMLs down to disk instead of inflating in memory (#4) 2025-12-08 00:39:17 +11:00
OpdsParser fix: OPDS browser OOM (#403) 2026-01-22 01:43:51 +11:00
picojpeg Add JPG image support (#23) 2025-12-21 17:15:17 +11:00
Serialization Add exFAT support (#150) 2025-12-30 16:09:30 +11:00
Txt Add TXT file reader support (#240) 2026-01-14 21:36:40 +11:00
Utf8 fix: truncating chapter titles using UTF-8 safe function (#599) 2026-02-01 22:23:48 +11:00
Xtc feat: UI themes, Lyra (#528) 2026-02-05 21:50:11 +11:00
ZipFile perf: optimize large EPUB indexing from O(n^2) to O(n) (#458) 2026-01-28 01:29:15 +11:00
README Public release 2025-12-03 22:06:45 +11:00

This directory is intended for project specific (private) libraries.
PlatformIO will compile them to static libraries and link into the executable file.

The source code of each library should be placed in a separate directory
("lib/your_library_name/[Code]").

For example, see the structure of the following example libraries `Foo` and `Bar`:

|--lib
|  |
|  |--Bar
|  |  |--docs
|  |  |--examples
|  |  |--src
|  |     |- Bar.c
|  |     |- Bar.h
|  |  |- library.json (optional. for custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
|  |
|  |--Foo
|  |  |- Foo.c
|  |  |- Foo.h
|  |
|  |- README --> THIS FILE
|
|- platformio.ini
|--src
   |- main.c

Example contents of `src/main.c` using Foo and Bar:
```
#include <Foo.h>
#include <Bar.h>

int main (void)
{
  ...
}

```

The PlatformIO Library Dependency Finder will find automatically dependent
libraries by scanning project source files.

More information about PlatformIO Library Dependency Finder
- https://docs.platformio.org/page/librarymanager/ldf.html