René's URL Explorer Experiment


Title: Fast composed-font emoji rendering via lv_imgfont_set_range by bitcoin3us · Pull Request #148 · MicroPythonOS/MicroPythonOS · GitHub

Open Graph Title: Fast composed-font emoji rendering via lv_imgfont_set_range by bitcoin3us · Pull Request #148 · MicroPythonOS/MicroPythonOS

X Title: Fast composed-font emoji rendering via lv_imgfont_set_range by bitcoin3us · Pull Request #148 · MicroPythonOS/MicroPythonOS

Description: Summary Cuts the per-glyph cost of FontManager.getFont(emoji=True) labels from a C→Python round-trip per glyph to two int compares in C, for any codepoint that isn't in the emoji map. User-visible result: noticeably smoother scrolling of any label that uses an emoji-fallback font (Lightning Piggy transactions row, Files list, etc.) — even though most rows have no emoji in them. How Three pieces: internal_filesystem/lib/mpos/ui/font_manager.py — _create_emoji_font(size) now calls lv.imgfont_set_range(font, cp_min, cp_max, 0xE000, 0xF8FF) after lv.imgfont_create. cp_min/cp_max are computed dynamically from the loaded _emoji_maps keys, so the filter self-maintains as the emoji set grows — no hardcoded magic number. Guarded by try/except AttributeError so older lvgl_micropython pins still work (just without the speedup). scripts/build_mpos.sh — applies lvgl_micropython/imgfont_set_range.patch against lib/lvgl during the build. Gated by a -f existence check, so older lvgl_micropython pins (no patch file present) still build cleanly. lvgl_micropython submodule — bumped 916ec6b → e00d9d9. Picks up the new imgfont_set_range.patch plus a small drive-by brew-config parser fix in builder/macOS.py that was breaking macOS builds entirely. Dependency This PR depends on MicroPythonOS/lvgl_micropython#3. The submodule pointer here references e00d9d9, which currently lives only on the bitcoin3us/lvgl_micropython fork. Once #3 merges into MicroPythonOS/lvgl_micropython, this PR's submodule pointer will resolve from upstream and this can land. .gitmodules is intentionally untouched (still points at the canonical URL). Test plan macOS desktop build (build_mpos.sh macOS) — clean, lv.imgfont_set_range exposed in the LVGL binding ESP32-S3 firmware build (build_mpos.sh esp32s3) — clean build, patch applies, all expected freezing happens Flash + boot on Waveshare ESP32-S3-Touch-LCD-2 — boots cleanly, lv.imgfont_set_range callable, FontManager wiring works FontManager bounds calculation on device — with the 400-emoji set loaded, bounds resolve to (0x203C, 0x1F9E2) (exact min/max across the loaded codepoints, as designed) Backward-compat fallback — try/except AttributeError path verified mentally (covered by gating in build_mpos.sh) User test — scrolling the Lightning Piggy transactions list feels noticeably smoother than the pre-patch firmware

Open Graph Description: Summary Cuts the per-glyph cost of FontManager.getFont(emoji=True) labels from a C→Python round-trip per glyph to two int compares in C, for any codepoint that isn't in the emoji map. User-visi...

X Description: Summary Cuts the per-glyph cost of FontManager.getFont(emoji=True) labels from a C→Python round-trip per glyph to two int compares in C, for any codepoint that isn't in the emoji map. User-...

Opengraph URL: https://github.com/MicroPythonOS/MicroPythonOS/pull/148

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:ec36ff4f-15cd-f220-0884-70f0b1076995
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idBD1C:F3931:104B:14A4:6A523C98
html-safe-nonce8fafee1d0bc733b4f2c5ab7392fa3a07485afeb5c46ee20e4031bedd0be6f0e7
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCRDFDOkYzOTMxOjEwNEI6MTRBNDo2QTUyM0M5OCIsInZpc2l0b3JfaWQiOiI4MzI3ODA3MjU5MzMwNjI0NjY0IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac03df41f5fc253fe9e4c36b3b749e404150696e96545327780c4ed8864f1965d2
hovercard-subject-tagpull_request:3774867370
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
twitter:imagehttps://avatars.githubusercontent.com/u/115934595?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/115934595?s=400&v=4
og:image:altSummary Cuts the per-glyph cost of FontManager.getFont(emoji=True) labels from a C→Python round-trip per glyph to two int compares in C, for any codepoint that isn't in the emoji map. User-visi...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/MicroPythonOS/MicroPythonOS git https://github.com/MicroPythonOS/MicroPythonOS.git
octolytics-dimension-user_id213598128
octolytics-dimension-user_loginMicroPythonOS
octolytics-dimension-repository_id975472483
octolytics-dimension-repository_nwoMicroPythonOS/MicroPythonOS
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id975472483
octolytics-dimension-repository_network_root_nwoMicroPythonOS/MicroPythonOS
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release7aed05249554b889eb33d002851a973eebcc7e91
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FMicroPythonOS%2FMicroPythonOS%2Fpull%2F148%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FMicroPythonOS%2FMicroPythonOS%2Fpull%2F148%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=MicroPythonOS%2FMicroPythonOS
Reloadhttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
Reloadhttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
Reloadhttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
Please reload this pagehttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
MicroPythonOS https://github.com/MicroPythonOS
MicroPythonOShttps://github.com/MicroPythonOS/MicroPythonOS
Notifications https://github.com/login?return_to=%2FMicroPythonOS%2FMicroPythonOS
Fork 83 https://github.com/login?return_to=%2FMicroPythonOS%2FMicroPythonOS
Star 737 https://github.com/login?return_to=%2FMicroPythonOS%2FMicroPythonOS
Code https://github.com/MicroPythonOS/MicroPythonOS
Issues 23 https://github.com/MicroPythonOS/MicroPythonOS/issues
Pull requests 8 https://github.com/MicroPythonOS/MicroPythonOS/pulls
Discussions https://github.com/MicroPythonOS/MicroPythonOS/discussions
Actions https://github.com/MicroPythonOS/MicroPythonOS/actions
Projects https://github.com/MicroPythonOS/MicroPythonOS/projects
Security and quality 0 https://github.com/MicroPythonOS/MicroPythonOS/security
Insights https://github.com/MicroPythonOS/MicroPythonOS/pulse
Code https://github.com/MicroPythonOS/MicroPythonOS
Issues https://github.com/MicroPythonOS/MicroPythonOS/issues
Pull requests https://github.com/MicroPythonOS/MicroPythonOS/pulls
Discussions https://github.com/MicroPythonOS/MicroPythonOS/discussions
Actions https://github.com/MicroPythonOS/MicroPythonOS/actions
Projects https://github.com/MicroPythonOS/MicroPythonOS/projects
Security and quality https://github.com/MicroPythonOS/MicroPythonOS/security
Insights https://github.com/MicroPythonOS/MicroPythonOS/pulse
Sign up for GitHub https://github.com/signup?return_to=%2FMicroPythonOS%2FMicroPythonOS%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2FMicroPythonOS%2FMicroPythonOS%2Fissues%2Fnew%2Fchoose
ThomasFarstrikehttps://github.com/ThomasFarstrike
MicroPythonOS:mainhttps://github.com/MicroPythonOS/MicroPythonOS/tree/main
bitcoin3us:fix/imgfont-fast-emoji-renderhttps://github.com/bitcoin3us/MicroPythonOS/tree/fix/imgfont-fast-emoji-render
Conversation 1 https://github.com/MicroPythonOS/MicroPythonOS/pull/148
Commits 1 https://github.com/MicroPythonOS/MicroPythonOS/pull/148/commits
Checks 5 https://github.com/MicroPythonOS/MicroPythonOS/pull/148/checks
Files changed https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
Please reload this pagehttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
Fast composed-font emoji rendering via lv_imgfont_set_range https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#top
Show all changes 1 commit https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
b7aa15a Fast composed-font emoji rendering via lv_imgfont_set_range bitcoin3us May 30, 2026 https://github.com/MicroPythonOS/MicroPythonOS/pull/148/commits/b7aa15a9efc10ef227541717a282a400766d1979
Clear filters https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
Please reload this pagehttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
Please reload this pagehttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
font_manager.py https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#diff-b8d6169c3d4211dd27ed8ebf2087a8c6f3bb67a26426949095af2fb6292422db
lvgl_micropython https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#diff-3e2a4dc56fde8b684e0a47d6e6fe2b9b2879c25ea4d0dfdf33aa9ee298b48eac
build_mpos.sh https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#diff-821a93895763951fc5d5a2ae8a5c530902649d7a33a59790394cbf9d830db2c4
internal_filesystem/lib/mpos/ui/font_manager.pyhttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#diff-b8d6169c3d4211dd27ed8ebf2087a8c6f3bb67a26426949095af2fb6292422db
View file https://github.com/bitcoin3us/MicroPythonOS/blob/b7aa15a9efc10ef227541717a282a400766d1979/internal_filesystem/lib/mpos/ui/font_manager.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/MicroPythonOS/MicroPythonOS/pull/148/{{ revealButtonHref }}
https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#diff-b8d6169c3d4211dd27ed8ebf2087a8c6f3bb67a26426949095af2fb6292422db
https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#diff-b8d6169c3d4211dd27ed8ebf2087a8c6f3bb67a26426949095af2fb6292422db
lvgl_micropythonhttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#diff-3e2a4dc56fde8b684e0a47d6e6fe2b9b2879c25ea4d0dfdf33aa9ee298b48eac
Open in desktop https://desktop.github.com
lvgl_micropythonhttps://github.com/MicroPythonOS/lvgl_micropython
2 files https://github.com/MicroPythonOS/lvgl_micropython/compare/916ec6b55a0602444b01e1fd49882c2632438add...e00d9d9668f7fdb3b8cfdc7161fc5d6d95754738
builder/macOS.py https://github.com/MicroPythonOS/lvgl_micropython/compare/916ec6b55a0602444b01e1fd49882c2632438add...e00d9d9668f7fdb3b8cfdc7161fc5d6d95754738#diff-b44e6f449420c0e334abd5c03d2ca8b7a6149d5b8c2163120b343692065d6253
imgfont_set_range.patch https://github.com/MicroPythonOS/lvgl_micropython/compare/916ec6b55a0602444b01e1fd49882c2632438add...e00d9d9668f7fdb3b8cfdc7161fc5d6d95754738#diff-3cd04e8745592b9804279f33c975525d1270c16716799160d9ade6629c7c0e98
scripts/build_mpos.shhttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#diff-821a93895763951fc5d5a2ae8a5c530902649d7a33a59790394cbf9d830db2c4
View file https://github.com/bitcoin3us/MicroPythonOS/blob/b7aa15a9efc10ef227541717a282a400766d1979/scripts/build_mpos.sh
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/MicroPythonOS/MicroPythonOS/pull/148/{{ revealButtonHref }}
https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#diff-821a93895763951fc5d5a2ae8a5c530902649d7a33a59790394cbf9d830db2c4
https://github.com/MicroPythonOS/MicroPythonOS/pull/148/files#diff-821a93895763951fc5d5a2ae8a5c530902649d7a33a59790394cbf9d830db2c4
Please reload this pagehttps://github.com/MicroPythonOS/MicroPythonOS/pull/148/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.