diff --git a/.gitignore b/.gitignore
index d800491d49862aa1e022c5727f63dfa99ea9713e..4a19137ba557c060e0d3620a28ed7e8896275c4d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -95,3 +95,12 @@ vendor/luajit/src/luajit
 
 .nuget
 .vs
+
+# Meson
+subprojects/freetype*
+subprojects/fribidi
+subprojects/harfbuzz
+subprojects/libass
+subprojects/libpng*
+subprojects/packagecache
+subprojects/zlib*
diff --git a/subprojects/expat.wrap b/subprojects/expat.wrap
new file mode 100644
index 0000000000000000000000000000000000000000..0a605d019b58dec09c4b3fa3f6fd24fc6135b88c
--- /dev/null
+++ b/subprojects/expat.wrap
@@ -0,0 +1,10 @@
+[wrap-file]
+directory = expat-2.2.6
+
+source_url = https://github.com/libexpat/libexpat/releases/download/R_2_2_6/expat-2.2.6.tar.bz2
+source_filename = expat-2.2.6.tar.bz2
+source_hash = 17b43c2716d521369f82fc2dc70f359860e90fa440bea65b3b85f0b246ea81f2
+
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/expat/2.2.6/1/get_zip
+patch_filename = expat-2.2.6-1-wrap.zip
+patch_hash = b8312fae757c7bff6f0cb430108104441a3da7a0a333809f5c80b354157eaa4d
diff --git a/subprojects/freetype2.wrap b/subprojects/freetype2.wrap
new file mode 100644
index 0000000000000000000000000000000000000000..613f7d6273220556a5473585338e78b4308f2494
--- /dev/null
+++ b/subprojects/freetype2.wrap
@@ -0,0 +1,10 @@
+[wrap-file]
+directory = freetype-2.9.1
+
+source_url = https://download.savannah.gnu.org/releases/freetype/freetype-2.9.1.tar.gz
+source_filename = freetype-2.9.1.tar.gz
+source_hash = ec391504e55498adceb30baceebd147a6e963f636eb617424bcfc47a169898ce
+
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/freetype2/2.9.1/1/get_zip
+patch_filename = freetype2-2.9.1-1-wrap.zip
+patch_hash = 06222607775e707c6d7b8d21ffdb04c7672f676a18c5ebb9880545130ab0407b
diff --git a/subprojects/fribidi.wrap b/subprojects/fribidi.wrap
new file mode 100644
index 0000000000000000000000000000000000000000..e3f62a68897817a4badd871f9bef2d0c7939e1a5
--- /dev/null
+++ b/subprojects/fribidi.wrap
@@ -0,0 +1,4 @@
+[wrap-git]
+directory = fribidi
+url = https://github.com/fribidi/fribidi.git
+revision = master
diff --git a/subprojects/gtest.wrap b/subprojects/gtest.wrap
new file mode 100644
index 0000000000000000000000000000000000000000..773a713c955c4e912ea0c71932cfa5101e59adc2
--- /dev/null
+++ b/subprojects/gtest.wrap
@@ -0,0 +1,10 @@
+[wrap-file]
+directory = googletest-release-1.8.0
+
+source_url = https://github.com/google/googletest/archive/release-1.8.0.zip
+source_filename = gtest-1.8.0.zip
+source_hash = f3ed3b58511efd272eb074a3a6d6fb79d7c2e6a0e374323d1e6bcbcc1ef141bf
+
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/gtest/1.8.0/5/get_zip
+patch_filename = gtest-1.8.0-5-wrap.zip
+patch_hash = 7eeaede4aa2610a403313b74e04baf91ccfbaef03203d8f56312e22df1834ec5
diff --git a/subprojects/harfbuzz.wrap b/subprojects/harfbuzz.wrap
new file mode 100644
index 0000000000000000000000000000000000000000..20cafdae6bf3142248b9e89346c22735ff91d6e6
--- /dev/null
+++ b/subprojects/harfbuzz.wrap
@@ -0,0 +1,5 @@
+[wrap-git]
+directory = harfbuzz
+# Change this URL once upstreamed!
+url = https://github.com/tp-m/harfbuzz.git
+revision = meson-rebased
diff --git a/subprojects/libass.wrap b/subprojects/libass.wrap
new file mode 100644
index 0000000000000000000000000000000000000000..2e0629c10d58f0af6a58b7544e33b77c1f106c9d
--- /dev/null
+++ b/subprojects/libass.wrap
@@ -0,0 +1,4 @@
+[wrap-git]
+directory = libass
+url = https://github.com/TypesettingTools/libass.git
+revision = meson
diff --git a/subprojects/libpng.wrap b/subprojects/libpng.wrap
new file mode 100644
index 0000000000000000000000000000000000000000..30774eb72ad42c91c410bb6860010dfc9aa67e05
--- /dev/null
+++ b/subprojects/libpng.wrap
@@ -0,0 +1,10 @@
+[wrap-file]
+directory = libpng-1.6.35
+
+source_url = https://github.com/glennrp/libpng/archive/v1.6.35.tar.gz
+source_filename = libpng-1.6.35.tar.gz
+source_hash = 6d59d6a154ccbb772ec11772cb8f8beb0d382b61e7ccc62435bf7311c9f4b210
+
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/libpng/1.6.35/5/get_zip
+patch_filename = libpng-1.6.35-5-wrap.zip
+patch_hash = da42b18e8d75a88615bdbc1c7bbf1f739ae19f63a8e70d96c90bc448326ae6b7
diff --git a/subprojects/zlib.wrap b/subprojects/zlib.wrap
new file mode 100644
index 0000000000000000000000000000000000000000..97de00ef744fc5708741e7bab5059ee4e26c8ccc
--- /dev/null
+++ b/subprojects/zlib.wrap
@@ -0,0 +1,10 @@
+[wrap-file]
+directory = zlib-1.2.11
+
+source_url = http://zlib.net/fossils/zlib-1.2.11.tar.gz
+source_filename = zlib-1.2.11.tar.gz
+source_hash = c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
+
+patch_url = https://wrapdb.mesonbuild.com/v1/projects/zlib/1.2.11/3/get_zip
+patch_filename = zlib-1.2.11-3-wrap.zip
+patch_hash = f07dc491ab3d05daf00632a0591e2ae61b470615b5b73bcf9b3f061fff65cff0