com.github.woojiahao.utility.FontUtility.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kMD2PDF Show documentation
Show all versions of kMD2PDF Show documentation
Simple and highly customizable markdown to PDF conversion library
package com.github.woojiahao.utility
import com.github.woojiahao.utility.extensions.isFileType
import org.apache.commons.lang3.SystemUtils.*
import java.io.File
/**
* Returns all folders with .ttf or .otf files based on the base folders
* from [getBaseFontDirectories].
*/
fun getFontDirectories() = getFontDirectorySubFolders(getBaseFontDirectories().map { File(it) })
/**
* Retrieves the common font directories stored on an OS.
*/
private fun getBaseFontDirectories() =
when {
IS_OS_WINDOWS -> listOf(
"${System.getenv("WINDIR")}\\Fonts\\"
)
IS_OS_MAC || IS_OS_MAC_OSX -> listOf(
"/System/Library/Fonts",
"/Library/Fonts",
"~/Library/Fonts",
"/Network/Library/Fonts"
)
IS_OS_LINUX -> listOf(
"/usr/share/fonts",
"/usr/local/share/fonts",
"~/.fonts"
)
else -> emptyList()
}
/**
* Traverses through [baseFontDirectories] to find sub-folders that
* contain .ttf or .otf files, returning the parent folder names of all these
* sub-folders (inclusive of the each [baseFontDirectories].
*/
private fun getFontDirectorySubFolders(baseFontDirectories: List) =
baseFontDirectories
.map {
it
.walk()
.filter { f -> f.isFileType("ttf", "otf") }
.map { f -> f.parent }
.distinct()
.toList()
}
.flatten()