diff --git a/build/libass/config.h b/build/libass/config.h
index 9077eac2c..9b46c3714 100644
--- a/build/libass/config.h
+++ b/build/libass/config.h
@@ -1,7 +1,6 @@
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NONSTDC_NO_DEPRECATE
-#define CONFIG_FONTCONFIG 1
#define CONFIG_ASM 1
-
-#define M_PI 3.1415926535897932384626433832795
+#define CONFIG_FONTCONFIG 1
+#define CONFIG_RASTERIZER 1
diff --git a/build/libass/dirent.h b/build/libass/dirent.h
new file mode 100644
index 000000000..fcbd0289b
--- /dev/null
+++ b/build/libass/dirent.h
@@ -0,0 +1,6 @@
+// libass uses dirent in a function we don't use, so just provide a dummy version
+typedef struct DIR { int dummy; } DIR;
+typedef struct dirent { char *d_name; } dirent;
+static inline DIR *opendir(const char *x) { return 0; }
+static inline struct dirent *readdir(DIR *x) { return 0; }
+static inline void closedir(DIR *x) { }
diff --git a/build/libass/libass.vcxproj b/build/libass/libass.vcxproj
index ad44c1d2f..e78c993fe 100644
--- a/build/libass/libass.vcxproj
+++ b/build/libass/libass.vcxproj
@@ -52,6 +52,7 @@
true
+
@@ -81,15 +82,20 @@
+
+
+
+
+
@@ -106,4 +112,4 @@
{fb8e8d19-a4d6-4181-943c-282075f49b41}
-
\ No newline at end of file
+
diff --git a/build/libass/libass.vcxproj.filters b/build/libass/libass.vcxproj.filters
index 06cc65846..f9c3571ba 100644
--- a/build/libass/libass.vcxproj.filters
+++ b/build/libass/libass.vcxproj.filters
@@ -28,6 +28,9 @@
Assembly Files
+
+ Assembly Files
+
Assembly Files
@@ -113,6 +116,9 @@
Source Files
+
+ Source Files
+
Source Files
@@ -125,12 +131,21 @@
Source Files
+
+ Source Files
+
Source Files
Source Files
+
+ Source Files
+
+
+ Source Files
+
Source Files
@@ -140,6 +155,9 @@
Source Files
+
+ Source Files
+
Source Files
diff --git a/vendor/libass b/vendor/libass
index b732598bc..cfa1a61e3 160000
--- a/vendor/libass
+++ b/vendor/libass
@@ -1 +1 @@
-Subproject commit b732598bcbefa6949986fc328b2238589eaf63b6
+Subproject commit cfa1a61e39f218fe4dc288ddf44b85200ff35fdd