{"id":16380281,"url":"https://github.com/aramperes/buzz4j","last_synced_at":"2025-06-14T01:33:35.227Z","repository":{"id":189105041,"uuid":"679965933","full_name":"aramperes/buzz4j","owner":"aramperes","description":"Java bindings for HarfBuzz","archived":false,"fork":false,"pushed_at":"2023-08-22T20:56:01.000Z","size":7622,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-21T14:49:41.071Z","etag":null,"topics":["bindings","harfbuzz","java","jni","text-shaping"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aramperes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-18T03:12:18.000Z","updated_at":"2024-12-03T06:17:16.000Z","dependencies_parsed_at":"2024-11-08T18:47:33.797Z","dependency_job_id":"0f5f3768-c931-4e3f-b150-07dd84bc3b8a","html_url":"https://github.com/aramperes/buzz4j","commit_stats":null,"previous_names":["aramperes/buzz4j"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/aramperes/buzz4j","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aramperes%2Fbuzz4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aramperes%2Fbuzz4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aramperes%2Fbuzz4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aramperes%2Fbuzz4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aramperes","download_url":"https://codeload.github.com/aramperes/buzz4j/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aramperes%2Fbuzz4j/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259745364,"owners_count":22905082,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bindings","harfbuzz","java","jni","text-shaping"],"created_at":"2024-10-11T03:51:02.862Z","updated_at":"2025-06-14T01:33:35.189Z","avatar_url":"https://github.com/aramperes.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"right\" alt=\"buzz4j\" width=\"150\" src=\".github/buzz4j.png\"\u003e\n\n# buzz4j\n\nJava bindings for [HarfBuzz](https://harfbuzz.github.io).\n\n[![MIT licensed](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![Build status](https://github.com/aramperes/buzz4j/actions/workflows/build.yaml/badge.svg)](https://github.com/aramperes/buzz4j/actions)\n[![Latest Release](https://img.shields.io/github/v/tag/aramperes/buzz4j?label=release)](https://github.com/aramperes/buzz4j/releases/latest)\n\n## Usage\n\nThis library only implements a tiny subset of HarfBuzz API. I focused on the use-case for my own projects:\n\n```java\nimport dev.poire.buzz4j.HarfBuzz;\n\nHarfBuzz.shapeString(fontPath, text);\n```\n\nWhich gives you a list of glyph and their drawing position:\n\n```\nShapeGlyph{\n  int glyphId\n  int advanceX\n  int advanceY\n  int offsetX\n  int offsetY\n}[]\n```\n\n## Compile\n\nThere is a submodule for `harfbuzz`. Start by fetching the submodule sources with `git submodule update`.\n\nThen, `cd harfbuzz` and follow the [official instructions](https://harfbuzz.github.io/building.html) (meson\nrecommended):\n\n```sh\nmeson build --wrap-mode=default\nmeson compile -C build\n```\n\nThe `harfbuzz/build` directory should have, at minimum:\n\n```\nsrc/harfbuzz.lib\nsrc/harfbuzz.dll\nsubprojects/freetype-2.13.0/freetype-6.dll\nsubprojects/libpng-1.6.39/png16-16.dll\n```\n\nNow, back in the root directory, run tests and build a `debug` library:\n\n```sh\n./gradlew build\n```\n\nThis will build a JAR in `build/libs`, but it is then recommended to build\nthe shared library in `release` mode for distribution:\n\n```sh\n./gradlew assembleRelease\n```\n\nThe build outputs for distribution are:\n\n```\nbuild/libs/buzz4j-1.0-SNAPSHOT.jar\nbuzz4jni/build/lib/main/release/buzz4j.dll\n```\n\nKeep in mind that you will need dependencies at runtime:\n\n```\nharfbuzz.dll\nfreetype-6.dll\npng16-16.dll\n```\n\n## License\n\nMIT License. See `LICENSE` for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faramperes%2Fbuzz4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faramperes%2Fbuzz4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faramperes%2Fbuzz4j/lists"}