public Font get(String name, Integer size, Boolean bold, Boolean italic) {
		Pattern pattern = Pattern.compile("[\\/]?(?:[^\\/]+[\\/])*([^\\/]+)\\.[a-zA-Z0-9]+");
		for (int i = 0; i < resources.size(); i++) {
			ResourceEntry<Font> entry = resources.get(i);
			Matcher matcher = pattern.matcher(entry.path);
			if (!matcher.find() || !matcher.group(1).equalsIgnoreCase(name)) continue;
			
			int eSize = 12;
			boolean eBold = false, eItalic = false;
			
			for (int j = 0; j < entry.data.length; j++) {
				assert entry.data[j] instanceof String;
				if (((String)entry.data[j]).equalsIgnoreCase("size")) eSize = (Integer)entry.data[++j];
				else if (((String)entry.data[j]).equalsIgnoreCase("bold")) eBold = (Boolean)entry.data[++j];
				else if (((String)entry.data[j]).equalsIgnoreCase("italic")) eItalic = (Boolean)entry.data[++j];
			}
			
			if (size != null && size != eSize) continue;
			if (bold != null && bold != eBold) continue;
			if (italic != null && italic != eItalic) continue;
			return entry.get();
		}
		return null;
	}