• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

carlobeltrame / ecamp3
41%
devel: 54%

Build:
Build:
LAST BUILD BRANCH: vue3
DEFAULT BRANCH: devel
Repo Added 09 Dec 2020 08:26PM UTC
Token 6fIAH20Q3P48o3hVcVxEkbo2yxxOVOcCS regen
Build 1086 Last
Files 733
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH fix-combination-emoji
branch: fix-combination-emoji
CHANGE BRANCH
x
Reset
Sync Branches
  • fix-combination-emoji
  • activity-filter-counts
  • add-app-to-frontend-domain
  • add-content-types-to-deployment
  • add-course-text-fields
  • allow-editing-instance-name-in-layout-mode
  • alpha
  • api-entities
  • api-login
  • api-platform
  • api-platform-sentry
  • api-validation
  • apply-category-layout-to-activity
  • auto-logout
  • auto-select-sole-period
  • autoselect-activity-title-on-create
  • better-proposals-for-schedule-entry-times
  • bugfix-picasso-timing-on-weight-boundaries
  • camp-title-documentation
  • category-create-improvements
  • cb-devel
  • checklist-template-search
  • chore/api-platform-2.7
  • chore/api-platform-3.0
  • claim-personal-invitations
  • client-print-checklist-fix
  • contribution-documentation-update
  • copy-camp-with-composition-api
  • copy-category
  • crowdin
  • dashboard
  • deactivate-weasy-on-prod
  • deploy-test
  • dev-setup-improve-frontend-env-experiance
  • devel
  • devel2
  • disable-controls-in-prod
  • disable-graphql-in-deployments
  • disable-sentry-session-tracking
  • e2e-browsers
  • e2e-docker-compose
  • empty-numbering-scheme
  • environment-specific-cookies
  • eslint-rule
  • eslint-rule-debug
  • feat/camps-ux
  • feature-branch-deployment-comment
  • feature/1124-activity-layout-improvement
  • feature/973-column-layout
  • feature/content-node-abstract-persister
  • feature/deployment-time-in-footer
  • feature/embedded-entities
  • feature/hide-danger-zone-if-not-manager
  • feature/improve-cypress-smoke-test
  • feature/improve-sentry-integration
  • feature/lock_activity_while_delete_schedule_entry
  • feature/oauth-jubla
  • feature/only-ids-for-vue-draggable
  • feature/password-reset-recaptcha
  • feature/print-nuxt-helm
  • feature/smtp-mail
  • filter-schedule-entries-by-day
  • fix-4545
  • fix-base64-secret
  • fix-broken-activity-layout
  • fix-caddy-metrics-deprecation-warning
  • fix-client-print-linebreaks
  • fix-colorjs
  • fix-composer-lock
  • fix-console-warning
  • fix-cookie-domain
  • fix-core-data-namespace-issue
  • fix-dashboard-invite-bug
  • fix-dashboard-period-filter-from-url
  • fix-dev-data-camp-dates
  • fix-dev-data-storyboards
  • fix-division-by-zero
  • fix-docker-setup
  • fix-e2e-in-run-containers-as-local-user
  • fix-empty-submit
  • fix-entity-ordering
  • fix-expired-oauth-state-cookie
  • fix-frontend-build
  • fix-github-action
  • fix-invitation-badges
  • fix-local-dev-setup
  • fix-long-links-in-richtext
  • fix-n-plus-1-harder
  • fix-nested-enumeration-printing
  • fix-npm-engine-warnings
  • fix-npm-to-version-6-during-renovate-updates
  • fix-number-emoji
  • fix-php-version-for-phpunit
  • fix-phpstan
  • fix-phpunit-arg-type-check
  • fix-picasso-portrait-mode
  • fix-picasso-printing
  • fix-print-language
  • fix-react-print-dayjs-locale
  • fix-react-print-without-picasso
  • fix-return-types
  • fix-story-printing-periods
  • fix-twemoji-no-internet
  • fix/api-relation-check
  • fix/creating-periods
  • fix/deployment-cors
  • fix/di-generate-aot
  • fix/di-generate-aot-test
  • fix/dont-send-workflow-events-in-forks
  • fix/insert-new-content-nodes-at-end-of-list
  • fix/remove-hardcoded-sections-collection-link
  • fix/remove-proxy-directory-after-database-initialization
  • fix/renovate-cypress-version
  • force-vite-pre-optimization
  • github-actions
  • github-actions-conditional-secrets
  • harmonize-favicons
  • helm-timeout-option
  • improve-camp-template-category-layouts
  • improve-password-managers
  • improve-pdf-filenames
  • improve-react-print
  • improve/noob-docker-startup
  • improve/picasso
  • increase-cypress-timeout
  • intl-listformat-polyfill
  • invitation-vue-improvements
  • invite-user
  • jwt-cookie-domain
  • keep-activity-name-and-category
  • l10n_devel
  • l10n_devel2
  • leaving-camp-label
  • list-listless-material
  • login-email-validation
  • manager-can-delete-camp
  • material-list-select-required-star
  • move-docu-to-wiki
  • naming
  • native-dependencies-for-frontend-docker-build
  • oauth-prod-deployment
  • oauth-terms-of-service
  • oauth-without-php-sessions
  • page-numbers
  • persist-preferences
  • personal-invitations
  • picker-fixes
  • poc-react-pdf
  • preload-login-page
  • print-activity-filters
  • print-font-size
  • print-progress
  • print-react-improvements
  • react-pdf-emoji
  • react-print-performance-adjustment
  • react-split-picasso
  • refs/heads/devel
  • reload-schedule-entry-numbering
  • remove-content-type-icons-from-translations
  • remove-old-backend-from-docker-compose
  • remove-time-limit-on-unit-tests
  • remove-v-html
  • remove-vue-cli-plugin-i18n
  • renovate/configure
  • renovate/dunglas-mercure-0.x
  • renovate/eslint-config-prettier-8.x
  • renovate/friendsofphp-php-cs-fixer-3.x
  • renovate/hal-json-vuex-2.x
  • renovate/jest-monorepo
  • renovate/lexik-jwt-authentication-bundle-2.x
  • renovate/lock-file-maintenance
  • renovate/major-js-linter
  • renovate/npm-follow-redirects-vulnerability
  • renovate/npm-node-forge-vulnerability
  • renovate/nuxtjs-sentry-5.x
  • renovate/php-linter
  • renovate/react-pdf-renderer-3.x
  • renovate/rector-rector-0.x
  • renovate/symfony
  • renovate/vite-3.x
  • renovate/vue-monorepo
  • renovate/vuetify-2.x
  • replace-deployment-pr-description
  • replace-set-output
  • required-picasso-information
  • reverse-ordering-for-old-camps
  • rich-text-tables
  • run-containers-as-local-user
  • safety-considerations
  • schedule-entry-number-cleanup
  • shared-camps
  • shared-camps-better-performance
  • shorter-picasso-dates-in-pdf
  • simplify-access-to-entity-before-denormalization
  • single-click-unlocking
  • small-frontend-sentry-fixes
  • staging
  • summarize-deployment-contents
  • switch-language-on-login
  • temporary-package-lock-fix
  • terms-of-service
  • time-picker-no-auto-open
  • transaction-per-request
  • translate-page-orientations
  • try-vitest
  • update-prod-data-seeds
  • update-react-pdf-packages
  • update-readme-after-go-live
  • update-wiki-links-in-readme
  • upgrade-tiptap-2
  • validate-content-node-prototype
  • variable-font-size
  • vue-pdf
  • wide-category-layout-editing

18 Aug 2025 09:39AM UTC coverage: 41.483%. Remained the same
17036898797

push

github

carlobeltrame
Fix rendering combined emoji in the PDF

Fixes https://ecamp.sentry.io/issues/6353794860/?project=5602507&query=is%3Aunresolved%20image&referrer=issue-stream

The twemoji library strips one code point from the emoji file names in some cases, see https://github.com/twitter/twemoji/issues/419#issuecomment-637360325

Specifically, the male mage emoji consists of [4 code points](https://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%A7%99%E2%80%8D%E2%99%82%EF%B8%8F):
- 1f9d9 mage
- 200d  zero width joiner
- 2642  male sign
- fe0f  variation selector 16
And the correct twemoji filename is: `/twemoji/assets/72x72/1f9d9-200d-2642-fe0f.png`

On the other hand, the dove emoji consists of [2 code points](https://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%95%8A%EF%B8%8F):
- 1f54a dove
- fe0f  variation selector 16
And the correct twemoji filename is: `/twemoji/assets/72x72/1f54a.png` (note the omitted variation selector)

In the twemoji library, according to the linked comment, the variation selector is removed in simple emoji without a zero width joiner, but preserved in combined emoji with a zero width joiner. Therefore, we need to mirror this transformation.

Different emoji libraries can handle this differently, which is why it can't really be fixed on the react-pdf side.

1319 of 1573 branches covered (83.85%)

Branch coverage included in aggregate %.

0 of 9 new or added lines in 1 file covered. (0.0%)

1 existing line in 1 file now uncovered.

10489 of 26892 relevant lines covered (39.0%)

29.99 hits per line

Relevant lines Covered
Build:
Build:
26892 RELEVANT LINES 10489 COVERED LINES
29.99 HITS PER LINE
Source Files on fix-combination-emoji
  • Tree
  • List 718
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
17036898797 fix-combination-emoji Fix rendering combined emoji in the PDF Fixes https://ecamp.sentry.io/issues/6353794860/?project=5602507&query=is%3Aunresolved%20image&referrer=issue-stream The twemoji library strips one code point from the emoji file names in some cases, see h... push 18 Aug 2025 09:40AM UTC carlobeltrame github
41.48
17036745942 fix-combination-emoji Fix rendering combined emoji The twemoji library strips one code point from the emoji file names in some cases, see https://github.com/twitter/twemoji/issues/419#issuecomment-637360325 Specifically, the male mage emoji consists of 4 code points:... push 18 Aug 2025 09:33AM UTC carlobeltrame github
41.48
See All Builds (517)

Badge your Repo: ecamp3

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc