23 lines
		
	
	
		
			539 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			539 B
		
	
	
	
		
			TypeScript
		
	
	
// https://zhuanlan.zhihu.com/p/32746810
 | 
						|
export default function getFontSizes(base: number) {
 | 
						|
  const fontSizes = new Array(10).fill(null).map((_, index) => {
 | 
						|
    const i = index - 1;
 | 
						|
    const baseSize = base * 2.71828 ** (i / 5);
 | 
						|
    const intSize = index > 1 ? Math.floor(baseSize) : Math.ceil(baseSize);
 | 
						|
 | 
						|
    // Convert to even
 | 
						|
    return Math.floor(intSize / 2) * 2;
 | 
						|
  });
 | 
						|
 | 
						|
  fontSizes[1] = base;
 | 
						|
 | 
						|
  return fontSizes.map(size => {
 | 
						|
    const height = size + 8;
 | 
						|
 | 
						|
    return {
 | 
						|
      size,
 | 
						|
      lineHeight: height / size,
 | 
						|
    };
 | 
						|
  });
 | 
						|
}
 |