diff --git a/community/ftgl/APKBUILD b/community/ftgl/APKBUILD
index 17282e9103d05314c9a239378cdd7f3d6e4dca7b..2ce9b1d3bb873693fa8f81c8928f8c0ccf77a64c 100644
--- a/community/ftgl/APKBUILD
+++ b/community/ftgl/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Natanael Copa <ncopa@alpinelinux.org>
 pkgname=ftgl
 pkgver=2.4.0
-pkgrel=3
+pkgrel=4
 pkgdesc="freetype OpenGL layer"
 url="https://github.com/frankheckenbach/ftgl"
 arch="all"
@@ -10,7 +10,10 @@ license="MIT"
 depends_dev="mesa-dev freeglut-dev bash"
 makedepends="$depends_dev freetype-dev autoconf automake libtool"
 subpackages="$pkgname-dev $pkgname-doc"
-source="$pkgname-$pkgver.tar.gz::https://github.com/frankheckenbach/ftgl/archive/v$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://github.com/frankheckenbach/ftgl/archive/v$pkgver.tar.gz
+	gcc14.patch
+	"
+options="!check" # Missing cxxtest
 
 prepare() {
 	default_prepare
@@ -34,4 +37,5 @@ package() {
 
 sha512sums="
 5a0d05dbb32952e5aa81d2537d604192ca19710cd57289ae056acc5e3ae6d403d7f0ffc8cf6c1aada6c3c23a8df4a8d0eabb81433036ade810bca1894fdfde54  ftgl-2.4.0.tar.gz
+91078ebe17c79bb7059111c68080bf1769a2843c47de74733787c1e65c9efe2aa9f12457dcf57d154bb83d4cee0fbd9c7a45e894a315c0746dae090a5bdd84a5  gcc14.patch
 "
diff --git a/community/ftgl/gcc14.patch b/community/ftgl/gcc14.patch
new file mode 100644
index 0000000000000000000000000000000000000000..046261569eac567d37b4f32b9c4037f3cc85426b
--- /dev/null
+++ b/community/ftgl/gcc14.patch
@@ -0,0 +1,53 @@
+Source: https://github.com/frankheckenbach/ftgl/pull/20.patch
+Upstream issue: https://github.com/frankheckenbach/ftgl/issues/22
+--
+From d546aefd73dcbb0d0d1e0f3c916770d7f9f98169 Mon Sep 17 00:00:00 2001
+From: Joseph C Wang <joequant@gmail.com>
+Date: Tue, 8 Oct 2024 19:47:53 +0800
+Subject: [PATCH] fix type error
+
+---
+ src/FTContour.cpp    | 2 +-
+ src/FTContour.h      | 2 +-
+ src/FTVectoriser.cpp | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/FTContour.cpp b/src/FTContour.cpp
+index c668d32..ef13576 100644
+--- a/src/FTContour.cpp
++++ b/src/FTContour.cpp
+@@ -174,7 +174,7 @@ void FTContour::SetParity(int parity)
+ }
+ 
+ 
+-FTContour::FTContour(FT_Vector* contour, char* tags, unsigned int n)
++FTContour::FTContour(FT_Vector* contour, unsigned char* tags, unsigned int n)
+ {
+     FTPoint prev, cur(contour[(n - 1) % n]), next(contour[0]);
+     double olddir, dir = atan2((next - cur).Y(), (next - cur).X());
+diff --git a/src/FTContour.h b/src/FTContour.h
+index d2d187c..dc64e3a 100644
+--- a/src/FTContour.h
++++ b/src/FTContour.h
+@@ -52,7 +52,7 @@ class FTContour
+          * @param pointTags
+          * @param numberOfPoints
+          */
+-        FTContour(FT_Vector* contour, char* pointTags, unsigned int numberOfPoints);
++        FTContour(FT_Vector* contour, unsigned char* pointTags, unsigned int numberOfPoints);
+ 
+         /**
+          * Destructor
+diff --git a/src/FTVectoriser.cpp b/src/FTVectoriser.cpp
+index 26e7da8..53d738e 100644
+--- a/src/FTVectoriser.cpp
++++ b/src/FTVectoriser.cpp
+@@ -168,7 +168,7 @@ void FTVectoriser::ProcessContours()
+     for(int i = 0; i < ftContourCount; ++i)
+     {
+         FT_Vector* pointList = &outline.points[startIndex];
+-        char* tagList = &outline.tags[startIndex];
++        unsigned char* tagList = &outline.tags[startIndex];
+ 
+         endIndex = outline.contours[i];
+         contourLength =  (endIndex - startIndex) + 1;